Norbert
M.
Nobody's perfect.
Call me Nobody ;)
Temat: Optymalizacja prostego zapytania
Witam. Chciałby zoptymalizować zapytanie, które wykonuje mi się dosyć długo. Mam dwie tabele jedna dla produktów, druga dla kwot związanymi z tymi produktami. Połączone jeden do wielu. Jednemu produktowi odpowiada pięć kwot (A,B,C,D,E). Chciałby teraz zrobić zapytanie, które w jednym wierszu przedstawi produkt oraz jego pięć kwot. Robię sobie podzapytania, mniej więcej tak:
SELECT PrID, PrNazwa,
(SELECT TOP 1 KwKwota FROM KwTable WHERE (KwPrID = PrTable.PrID) AND (KwTyp = 'A')) AS KwotaA,
(SELECT TOP 1 KwKwota FROM KwTable AS KwTable_1 WHERE (KwPrID = PrTable.PrID) AND (KwTyp = 'B')) AS KwotaB,
(SELECT TOP 1 KwKwota FROM KwTable AS KwTable_2 WHERE (KwPrID = PrTable.PrID) AND (KwTyp = 'C')) AS KwotaC,
(SELECT TOP 1 KwKwota FROM KwTable AS KwTable_3 WHERE (KwPrID = PrTable.PrID) AND (KwTyp = 'D')) AS KwotaD,
(SELECT TOP 1 KwKwota FROM KwTable AS KwTable_4 WHERE (KwPrID = PrTable.PrID) AND (KwTyp = 'E')) AS KwotaE
FROM PrTable
Oczywiście zapytanie działa poprawnie, ale niezmiernie wolno, a jak dodam dodatkowe warunki to już w ogóle potrafi się wywalić. Czy jest inny sposób, żeby przy takiej strukturze bazy osiągnąć taki sam efekt?
PozdrawiamNorbert Maziarz edytował(a) ten post dnia 21.01.09 o godzinie 21:52