sql >> Databáze >  >> RDS >> Mysql

výkon mysql count

podívejte se na následující blogové příspěvky:

1) COUNT(***) vs COUNT(col)
2) Snadné tipy na výkon MySQL
3) Rychlé počítání(*) pro InnoDB

btw jaký motor používáš?

UPRAVENO: O technice pro urychlení počítání, když potřebujete vědět, zda existuje nějaké množství řádků. Omlouvám se, jen jsem se mýlil v mém dotazu. Takže, když potřebujete jen vědět, jestli existuje např. 300 řádků podle konkrétní podmínky můžete zkusit poddotaz:

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

nejprve minifikujete sadu výsledků a poté spočítáte výsledek; stále bude skenovat sadu výsledků, ale můžete to omezit (ještě jednou, funguje to, když je otázka do DB „je zde více nebo méně než 300 řádků), a pokud DB obsahuje více než 300 řádků, které splňují podmínku, je dotaz rychlejší

Výsledky testování (moje tabulka má 6,7 milionů řádků):

1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
vrátí 4,2 milionu po dobu 65,4 sekund

2) SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
vrátí 100 na 0,03 sekundy

Níže je výsledek vysvětlujícího dotazu, abyste viděli, co se tam děje:

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



  1. SQL, Pomocná tabulka čísel

  2. SQL NOT Operátor pro začátečníky

  3. Aktualizujte více řádků pomocí několika klauzulí „kde“ pro každý jednotlivý řádek

  4. Použití DISTINCT a COUNT společně v dotazu MySQL