Witam.
Problem polega na bardzo długim czasie zapytania. Zapytanie wygląda następująco:
SELECT DISTINCT
art.id,
art.kod + ' ',
art.nazwa + ' ',
SUM(m.ilosc),
((SELECT SUM(ISNULL(zdef.ilosc,0))
FROM zamow_poz_def zdef,
zamow_poz poz,
zamow zam
WHERE poz.id = zdef.id_zamow_poz
AND zam.id = poz.id_zamow
AND zdef.id_sl_artykul = art.id
AND (zam.data_potw IS NULL OR zam.data_potw > '20060120 19:00')
AND zam.numer_zamow LIKE 'ZMS%'
AND CAST(SUBSTRING(zam.numer_zamow, 4, CHARINDEX('.', zam.numer_zamow)-4) AS int)
IN ( 62 ) )),
(0),
art.cena,
art.id_sl_sezon
FROM magazyn m,
sl_artykul_def adef,
sl_artykul art
WHERE adef.id = m.id_sl_artykul_def
AND adef.id_sl_artykul = art.id
AND m.ilosc <> 0
AND m.id_sl_magazyn IN ( 10 )
GROUP by art.id, art.kod + ' ', art.nazwa + ' ', art.id_sl_sezon, art.cena
ORDER BY art.kod + ' '
Wiem, że nie wygląda ono łatwo. Problem polega na bardzo długim czasie trwania zapytania. Tutaj pojawia się moja prośba i pytanie. W jaki sposób można by zoptymalizować to zapytanie, może komuś wpadnie do głowy jakiś ciekawy sposób.
Moje kolejne pytanie to czy można scacheowac zapytanie i później te informacje obrabiać. Istnieją kursory ale nie wiem czy można do niego wrzucić wynik zapytania i później te informacje pobrać odfiltrowane na przykład.
Używam SQL Server 2000.