Goedemorgen allemaal,
Ik heb twee queries, of beter gezegd een query vervangen voor een nieuwe. Nu wil het echter zo zijn dat de oude query maar 2 seconde duurde en de nieuwe query soms wel 45 seconde in beslag neemt.
Beide queries geven zelde uitkomst alleen heeft de nieuwe query een extra kolom welke getoont wordt. Deze wordt berekend in een subselect.
Zelf kom ik er niet echt uit waarom er zo'n groot tijdsverschil zit tussen deze 2 queries, en hoop daarom ook dat iemand hier op tweakers mij de goede richting in kan schoppen.
Hieronder de 2 queries, eerste bovenste query is oude situatie onderste query is de nieuwe situatie.
Alvast bedankt.
EDIT:
Waarom ik dit tijdsverschil erg vindt is omdat ik een timeout krijg tijdens de uitvoer van de query. En ik da in mijn Access frontend allerlei meldingen krijg als #naam / #name
Ik heb twee queries, of beter gezegd een query vervangen voor een nieuwe. Nu wil het echter zo zijn dat de oude query maar 2 seconde duurde en de nieuwe query soms wel 45 seconde in beslag neemt.
Beide queries geven zelde uitkomst alleen heeft de nieuwe query een extra kolom welke getoont wordt. Deze wordt berekend in een subselect.
Zelf kom ik er niet echt uit waarom er zo'n groot tijdsverschil zit tussen deze 2 queries, en hoop daarom ook dat iemand hier op tweakers mij de goede richting in kan schoppen.
Hieronder de 2 queries, eerste bovenste query is oude situatie onderste query is de nieuwe situatie.
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| SELECT dbo.tbl_RTV_Sources.RTV_Source, dbo.tbl_RTV.RTVPO, dbo.tbl_RTV.RTVRMA, dbo.tbl_RTV.StatusID, COUNT(*) AS QtyRTV, dbo.tbl_RTV.DateRTVShipping, dbo.tbl_RTV_Sources.RTV_Source_ID FROM dbo.tbl_RTV INNER JOIN dbo.tbl_RTV_Sources ON dbo.tbl_RTV.RTVLocation = dbo.tbl_RTV_Sources.RTV_Source_ID LEFT OUTER JOIN dbo.tbl_Orders ON dbo.tbl_RTV.BCN = dbo.tbl_Orders.BCN GROUP BY dbo.tbl_RTV_Sources.RTV_Source, dbo.tbl_RTV.StatusID, dbo.tbl_RTV.RTVRMA, dbo.tbl_RTV.RTVPO, dbo.tbl_RTV.DateRTVShipping, dbo.tbl_RTV_Sources.RTV_Source_ID HAVING ( dbo.tbl_RTV.StatusID = 14 ) ORDER BY dbo.tbl_RTV_Sources.RTV_Source, dbo.tbl_RTV.RTVPO |
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| SELECT dbo.tbl_RTV_Sources.RTV_Source, dbo.tbl_RTV.RTVPO, dbo.tbl_RTV.RTVRMA, dbo.tbl_RTV.StatusID, COUNT(*) AS QtyOpen, qtyrtv.QtyRTV, dbo.tbl_RTV.DateRTVShipping, dbo.tbl_RTV_Sources.RTV_Source_ID FROM dbo.tbl_RTV LEFT OUTER JOIN (SELECT dbo.tbl_RTV.RTVPO, COUNT(*) AS QtyRTV FROM dbo.tbl_RTV GROUP BY dbo.tbl_RTV.RTVPO ) qtyrtv ON dbo.tbl_RTV.RTVPO = qtyrtv.RTVPO INNER JOIN dbo.tbl_RTV_Sources ON dbo.tbl_RTV.RTVLocation = dbo.tbl_RTV_Sources.RTV_Source_ID LEFT OUTER JOIN dbo.tbl_Orders ON dbo.tbl_RTV.BCN = dbo.tbl_Orders.BCN GROUP BY dbo.tbl_RTV_Sources.RTV_Source, dbo.tbl_RTV.RTVPO, dbo.tbl_RTV.RTVRMA, dbo.tbl_RTV.StatusID, qtyrtv.QtyRTV, dbo.tbl_RTV.DateRTVShipping, dbo.tbl_RTV_Sources.RTV_Source_ID ,dbo.tbl_Orders.DateShipping HAVING dbo.tbl_RTV.StatusID = 14 AND dbo.tbl_Orders.DateShipping IS NULL ORDER BY dbo.tbl_RTV_Sources.RTV_Source, dbo.tbl_RTV.RTVPO |
Alvast bedankt.
EDIT:
Waarom ik dit tijdsverschil erg vindt is omdat ik een timeout krijg tijdens de uitvoer van de query. En ik da in mijn Access frontend allerlei meldingen krijg als #naam / #name
[ Voor 3% gewijzigd door jvaneijk op 22-06-2009 11:39 ]