Contar registros tablas rápido en consola MySQL

  • Autor Autor Aledky91
  • Fecha de inicio Fecha de inicio
Aledky91

Aledky91

Delta
Verificación en dos pasos activada
Hola amigos.. estoy en un problema con la consola de mysql. Tengo una tabla con unos 400.000 registros y me gustaría contarlos y que no tarde nada en hacerlo.

Esto es lo que he intentado:

- Select count(*) : Esto funciona pero me tarda unos 30 segundos en contar todos los registros
- He intentado hacer una especie de apaño y crear una columna con auto_increment pero por lo visto solo se puede utilizar esta función cuando esta columna también tiene la llave primaria. Una vez numeradas todas solo tendría que llamar al ultimo registro con order by y limit. Supongo que así podría tener muy rápido el valor.

Mi pregunta es: ¿Se puede hacer un auto_increment sin tener una llave primaria? ¿Alguna otra idea para contar todos los registros?

No se si me explico bien la verdad..

Un saludo betas! 😀
 
Si puedes, necesitas que la columna sea indice

CREATE TABLE `test` (
`id` int(11) NOT NULL,
`datos` varchar(100) DEFAULT NULL,
`num` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`d`),
KEY `num` (`num`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
 
[MENTION=163881]rsantiestevan[/MENTION] acabo de entrar y veo que me dices de hacer lo mismo que he hecho al final (lo del indice) 😀 con esto lo he solucionado.
Muchas gracias por la ayuda 🙂
 
Haz algo más facil..

Si solo quieres saber el total del registros sin condiciones de registros los más rápido es hacer lo siguiente.

show table status where Name = 'nombre_tabla';

Esto te devolverá varias columnas, entre ellas el campo rows, y tendrás el número de columnas. En tiempo 0.

Si necesitas aplicar condiciones, aquí deberíamos ver la tabla, y la consulta concreta para analizar la política de indices que se puede aplicar.
 
30 segundos para un count() parece ser mucho tiempo, parece haber otro tipo de probemas, en MHO.

Cada configuracion es diferente, desde el manejador de base de datos, la red, los tablespaces, indices, etc. pero en la práctica aplico count() a tablas de 25.000.000 de registros, con condiciones y no llega a un tercio de ese tiempo,....y a veces me quejo!.

Saludos.
 
Atrás
Arriba