Nevermind, ik heb de indexen gerebuild en gereorganized en nu lijkt het wel goed te gaan.
Hallo allemaal, in een MsSQL database hebben wij een view die de laatste records per id ophaalt een een tabel met veel records. De view ziet er als volgt uit:
Deze view werkt goed, alleen bij één bepaald record duurt het uitvoeren 22 seconden, terwijl hij voor de andere records binnen een paar milliseconden klaar is.
Als ik de executions plans van beide query's naast elkaar zet dan zit daar inderdaad wat verschil in. Om dat te vergelijken heb ik beide plans opgeslagen en met WinMerge vergeleken. Bij het plan van de snelle query zie ik vervolgens het volgende staan:
Dit staat bij de langzame query er niet bij. Heeft iemand tips hoe ik er achter kan komen waarom de query voor het ene id wel een goed plan vindt en voor de andere niet?
Hallo allemaal, in een MsSQL database hebben wij een view die de laatste records per id ophaalt een een tabel met veel records. De view ziet er als volgt uit:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| SELECT TOP (100) PERCENT vehicleengineer, positionlongtitude, positionlatitude, speed, course, track, datetime, oid FROM dbo.positionlog WHERE ( oid IN (SELECT MAX(oid) AS oid FROM dbo.positionlog AS positionlog_1 GROUP BY vehicleengineer) ) AND ( NOT ( vehicleengineer IS NULL ) ) AND (vehicleengineer = hetid) ORDER BY datetime DESC |
Deze view werkt goed, alleen bij één bepaald record duurt het uitvoeren 22 seconden, terwijl hij voor de andere records binnen een paar milliseconden klaar is.
Als ik de executions plans van beide query's naast elkaar zet dan zit daar inderdaad wat verschil in. Om dat te vergelijken heb ik beide plans opgeslagen en met WinMerge vergeleken. Bij het plan van de snelle query zie ik vervolgens het volgende staan:
code:
1
| StatementOptmEarlyAbortReason="GoodEnoughPlanFound" |
Dit staat bij de langzame query er niet bij. Heeft iemand tips hoe ik er achter kan komen waarom de query voor het ene id wel een goed plan vindt en voor de andere niet?
[ Voor 10% gewijzigd door NMe op 06-08-2010 13:13 . Reden: Even het doorstrepen weggehaald. ;) ]
Hail to the king baby!