sql >> Database >  >> RDS >> Mysql

mysql telling-prestaties

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



  1. Het ultieme emoji-coderingsschema

  2. Big Query-variabelen instellen, zoals mysql

  3. Hoe een binaire afbeelding uit de database op te halen met C# in ASP.NET

  4. Wanneer NULL gebruiken in MySQL-tabellen?