Pomoc przy optymalizacji zapytania

Pomoc przy optymalizacji zapytania
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam takie zapytanie jak poniżej i niestety wykonuje się ono dłużej niż powinno, a nie mam już pomysłów jak mogę je poprawić, aby działało szybciej, próbowałem wykorzystać indeksy, ale nie dały one takiego rezultatu jaki bym oczekiwał, najbardziej czasochłonny jest fragment dane.value('(/gmina/kod)[1]', 'varchar(max)')LIKE 'YY' gdzie dane są odczytywane z xml'a. Widzicie tu w ogóle coś co można poprawić? Korzystam z SQL Server 2008.

Kopiuj
select p.* from  Tabela_A p join Tabela_B cz on p.id_pozycja=cz.id_pozycja join Tabela_C wp on wp.id_cykl_zycia=cz.id_cykl_zycia join Tabela_D ws on ws.id_cykl_zycia=cz.id_cykl_zycia join Tabela_E rk on rk.id_kategoria=p.id_kategoria join Tabela_F k on k.id_kategoria=p.id_kategoria where wp.id_wersja_pozycji in (select max(wpa.id_wersja_pozycji) from dbo.Tabela_B wpa group by wpa.id_cykl_zycia) and  ws.wersja_slownika = -1 and  p.id_slownik = 1 and  dane.value('(/gmina/kod)[1]', 'varchar(max)')LIKE 'YY' and  rk.id_kategoria = 6
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Wklej plan wykonania zapytania.

Vardamir
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Bez wyciągania wartości z XML będzie szybciej.

Kopiuj
dane.exist('/gmina/kod[(text()[1])="YY"]')=1

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.