Wpis z mikrobloga

Mircy problem jest. Mam 2 wersje bazy SQL (starsza - backup sprzed kilku miesięcy i aktualna). Na backupie proste zapytanie z wykorzystaniem LEFT JOIN wykonuje się w kilka sekund (~10k wierszy wynikowych), w bazie aktualnej (kilka miesięcy danych sprzedażowych więcej) po pół minuty wyświetla się dopiero około 50 wierszy.

W MSSQL jedyne co udało mi się podejrzeć, to fakt, że przy pierwszej wersji serwer używa merge join a w przypadku drugiej nested loops. Typy zmiennych, po których jest wykonywany JOIN są takie same (varchar). Przy INNER JOIN problemu nie ma, ale nie mogę go wykorzystać.

Jeszcze jedna zależność. Jeśli wykonuje zapytanie w ten sposób:

SELECT tabela1.zmienna1, tabela1.zmienna2, tabela2.zmienna1 from tabela1
LEFT JOIN tabela2 ON tabela1.zmienna1=tabela2.zmienna1

to zapytanie wykonuje się bardzo szybko, problem pojawia się kiedy próbuję dodać inne zmienne z tabeli 2.

Nie jestem zbyt dobry w tej dziedzinie, więc nie wiem co jeszcze sprawdzić. Problem jest w tym, iż jest to część większego zapytania, które przez to nie chce się wykonać.

#informatyka #it #sql #pytaniedoeksperta
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

reindeksacje


@Nie_Lubie_Poniedzialku @plushy słowo klucz w tym przypadku. Wystarczyło odbudować indeksy z poziomu programu serwisowego Subiekta i zestawienie działa jak marzenie :) Tak to jest jak się próbuje wymieniać silnik w aucie nie wiedząc dokładnie jak zmieniać opony. No ale ważne, że działa, dzięki kumple!
  • Odpowiedz