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

In MySQL 5, SELECT COUNT(1) FROM table_name è molto lento

Il conteggio di tutte le righe di una tabella è un'operazione molto lenta; non puoi davvero accelerare, a meno che tu non sia disposto a tenere un conteggio da qualche altra parte (e, naturalmente, questo può perdere la sincronizzazione).

Le persone che sono abituate a MyISAM tendono a pensare di ricevere il conteggio (*) "gratuitamente", ma non è proprio così. MyISAM trucchi non avendo MVCC, il che lo rende abbastanza facile.

La query che stai mostrando sta eseguendo una scansione completa dell'indice di un indice non nullo, che è generalmente il modo più veloce per contare le righe in una tabella innodb.

È difficile indovinare dalle informazioni che hai fornito, quale sia la tua applicazione, ma in generale, per gli utenti (ecc.) va bene vedere approssimazioni ravvicinate del numero di righe in tabelle di grandi dimensioni.