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

Dovrei evitare COUNT tutti insieme in InnoDB?

SELEZIONARE COUNT(*) DA nometabella sembra eseguire una scansione completa della tabella.

SELECT COUNT(*) FROM tablename USE INDEX (colname) sembra essere abbastanza veloce se l'indice disponibile NON è NULL, UNICO ea lunghezza fissa. Un indice non UNIQUE non aiuta molto, se non del tutto. Gli indici di lunghezza variabile (VARCHAR) sembrano essere più lenti, ma ciò potrebbe essere dovuto al fatto che l'indice è fisicamente più grande. Gli indici interi UNIQUE NOT NULL possono essere contati rapidamente. Il che ha senso.

MySQL dovrebbe davvero eseguire questa ottimizzazione automaticamente.