servidor sea rapido que peticiones para memoria mas liberar lento lentas lenta datos consultas configurar asignar mysql performance count

sea - peticiones mysql



cuenta lenta(*) en innoDB (2)

Eche un vistazo a este post en InnoDB, necesita hacer un escaneo completo de la tabla, mientras que en MyISAM es un índice de lectura.

Si utiliza una cláusula where aunque cambie el patrón de ejecución para usar índices, entonces, en general, InnoDB será más lento que MyISAM en recuentos completos no restringidos, mientras que el rendimiento coincide en recuentos restringidos.

Tengo una tabla message_message con 3000000 registros.

cuando realizo una consulta de conteo (*), es muy lento ...:

mysql> select count(*) from message_message ;

+ ---------- +

| cuenta (*) |

+ ---------- +

| 2819416 |

+ ---------- +

1 fila en el set (2 min 35.35 sec)

explícalo: mysql> explain select count(*) from message_message ;

| id | select_type | mesa | tipo | posibles_keys | clave | key_len | ref | filas | Extra |

| 1 | SIMPLE | message_message | índice | NULL | PRIMARIO | 4 | NULL | 2939870 | Usando índice |

1 fila en el set (0.02 seg)

¿qué ocurre?


Si desea contar la cantidad de registros, es mejor consultar toda la tabla y usar la propiedad num_rows del conjunto de resultados. Count(...) generalmente se usa cuando desea tener consultas agregadas (en combinación con GROUP BY ).