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