Intro
Ik moet wat data voor een grafiek berekenen. Dit doe ik met een aantal queries. Deze queries zien er hetzelfde uit, maar hebben telkens een andere datumrange. Het is dus erg belangrijk dat de performance van deze queries optimaal is. Vandaar mijn vraag...
Ik heb de volgende query:
Deze geeft als count ongeveer 14000 terug. Prima.
Hij berekent dit is ongeveer 10 miliseconden. Goed.
Nu ga ik deze query uitbreiden:
Deze geeft als count ongeveer 7000 terug. Prima.
Maar nu doet de query er ineens 90 miliseconden over. Erg vervelend.
Ik snap eerlijk gezegd niet waarom deze query (of beter gezegd: deze extra voorwaarde) de boel ineens zo vertaagd. Het veld Afgehandeld is van het type Bit. Ik heb de indexen gecontroleerd, maar een index op een Bit veld vertraagt alleen maar, dus die heb ik er weer afgehaald. Ik heb de volgorde in de where-clausule aangepast, maar dat scheelt ook niks.
Ben ik gedoemd met eent trage query, of zie ik iets over het hoofd?
Toevoeging
Je denkt misschien, wat een gezeur om 80 miliseconden, maar ik moet 24 waardes op deze manier opvragen. Omdat ik de grafiek real-time wil opbouwen, moet de performance optimaal zijn. Met nog wat bijkomende berekeningen etc. ben ik drie seconden aan het wachten op een grafiek, en dat is te lang.
Ik moet wat data voor een grafiek berekenen. Dit doe ik met een aantal queries. Deze queries zien er hetzelfde uit, maar hebben telkens een andere datumrange. Het is dus erg belangrijk dat de performance van deze queries optimaal is. Vandaar mijn vraag...
Ik heb de volgende query:
SQL:
1
2
3
| SELECT COUNT([id]) FROM verschillen WHERE FileimportTimestamp BETWEEN '01-01-2008' AND '01-07-2008' |
Deze geeft als count ongeveer 14000 terug. Prima.
Hij berekent dit is ongeveer 10 miliseconden. Goed.
Nu ga ik deze query uitbreiden:
SQL:
1
2
3
4
| SELECT COUNT([id]) FROM verschillen WHERE FileimportTimestamp BETWEEN '01-01-2008' AND '01-07-2008' AND Afgehandeld = 1 |
Deze geeft als count ongeveer 7000 terug. Prima.
Maar nu doet de query er ineens 90 miliseconden over. Erg vervelend.
Ik snap eerlijk gezegd niet waarom deze query (of beter gezegd: deze extra voorwaarde) de boel ineens zo vertaagd. Het veld Afgehandeld is van het type Bit. Ik heb de indexen gecontroleerd, maar een index op een Bit veld vertraagt alleen maar, dus die heb ik er weer afgehaald. Ik heb de volgorde in de where-clausule aangepast, maar dat scheelt ook niks.
Ben ik gedoemd met eent trage query, of zie ik iets over het hoofd?
Toevoeging
Je denkt misschien, wat een gezeur om 80 miliseconden, maar ik moet 24 waardes op deze manier opvragen. Omdat ik de grafiek real-time wil opbouwen, moet de performance optimaal zijn. Met nog wat bijkomende berekeningen etc. ben ik drie seconden aan het wachten op een grafiek, en dat is te lang.