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

prestazioni del conteggio di mysql

dai un'occhiata ai seguenti post del blog:

1) COUNT(***) vs COUNT(col)
2) Suggerimenti semplici per le prestazioni di MySQL
3) Conteggio veloce (*) per InnoDB

a proposito, che motore usi?

MODIFICATO: Informazioni sulla tecnica per accelerare il conteggio quando devi solo sapere se ci sono alcune righe. Scusa, ho solo sbagliato con la mia domanda. Quindi, quando devi solo sapere, se c'è ad es. 300 righe per condizione specifica puoi provare la sottoquery:

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

all'inizio si minimizza il set di risultati, quindi si conta il risultato; eseguirà comunque la scansione del set di risultati, ma puoi limitarlo (ancora una volta, funziona quando la domanda su DB è "è qui più o meno di 300 righe) e se DB contiene più di 300 righe che soddisfano la condizione che la query è più veloce

Risultati dei test (la mia tabella ha 6,7 ​​milioni di righe):

1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
restituisce 4,2 mln per 65,4 secondi

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

Di seguito è riportato il risultato della query di spiegazione per vedere cosa sta succedendo lì:

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