bekijk de volgende blogposts:
1) COUNT(***) vs COUNT(col)
2) Eenvoudige MySQL-prestatietips
3) Snel tellen(*) voor InnoDB
btw, welke motor gebruik je?
BEWERKT: Over techniek om het tellen te versnellen als je gewoon wilt weten of er een aantal rijen is. Sorry, was gewoon verkeerd met mijn vraag. Dus als u het gewoon wilt weten, of er b.v. 300 rijen op specifieke voorwaarde kunt u subquery proberen:
select count(*) FROM
( select 1 FROM _table_ WHERE _conditions_ LIMIT 300 ) AS result
eerst verklein je de resultatenset en tel je vervolgens het resultaat; het zal nog steeds de resultatenset scannen, maar je kunt het beperken (nogmaals, het werkt wanneer de vraag aan DB is "is hier meer of minder dan 300 rijen), en als DB meer dan 300 rijen bevat die voldoen aan de voorwaarde dat de vraag sneller is
Testresultaten (mijn tabel heeft 6,7 mln rijen):
1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
retourneert 4,2 mln voor 65,4 seconden
2) SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
retourneert 100 voor 0,03 seconden
Hieronder is het resultaat van de uitleg-query om te zien wat daar aan de hand is:
EXPLAIN SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result