sql >> Database teknologi >  >> RDS >> Mysql

mysql count ydeevne

tag et kig på følgende blogindlæg:

1) COUNT(***) vs COUNT(col)
2) Easy MySQL Performance Tips
3) Hurtig optælling(*) for InnoDB

btw, hvilken motor bruger du?

REDIGERET: Om teknik til at fremskynde optællingen, når du bare skal vide, om der er nogle rækker. Beklager, det var bare forkert med min forespørgsel. Så når du lige skal vide, om der er f.eks. 300 rækker efter specifik tilstand kan du prøve underforespørgsel:

select count(*) FROM
( select 1 FROM _table_ WHERE _conditions_ LIMIT 300 ) AS result

først formindsker du resultatsættet og tæller derefter resultatet; det vil stadig scanne resultatsæt, men du kan begrænse det (en gang til, det virker, når spørgsmålet til DB er "er her mere eller mindre end 300 rækker), og hvis DB indeholder mere end 300 rækker, som opfylder betingelsen om, at forespørgslen er hurtigere

Testresultater (min tabel har 6,7 mio. rækker):

1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
returnerer 4,2 mio. i 65,4 sekunder

2) SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
returnerer 100 i 0,03 sekunder

Nedenfor er resultatet af forklaringsforespørgslen for at se, hvad der foregår der:

EXPLAIN SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result



  1. brug en variabel til tabelnavn i mysql sproc

  2. Brug en trigger til at stoppe en indsættelse eller opdatering

  3. Sådan importeres en CSV-fil til en MySQL-tabel

  4. WordPress links alle omdirigerer til dobbelt URL