Pomoc przy optymalizacji zapytania

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.

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
0

Wklej plan wykonania zapytania.

0

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1