sql >> Base de Datos >  >> RDS >> Mysql

¿Todas las columnas de la tabla deben estar indexadas o no en la base de datos mysql?

La creación de un índice requiere espacio adicional en el disco, y demasiados índices pueden causar problemas derivados de los límites de tamaño de los sistemas de archivos, se debe pensar cuidadosamente para seleccionar los campos correctos para indexar.

Dado que los índices solo se utilizan para acelerar la búsqueda de un campo coincidente dentro de los registros, es lógico pensar que la indexación de campos utilizados solo para la salida sería simplemente una pérdida de espacio en disco y tiempo de procesamiento al realizar una operación de inserción o eliminación y, por lo tanto, debería ser evitado. También dada la naturaleza de una búsqueda binaria, la cardinalidad o singularidad de los datos es importante. La indexación en un campo con una cardinalidad de 2 dividiría los datos por la mitad, mientras que una cardinalidad de 1000 devolvería aproximadamente 1000 registros. Con una cardinalidad tan baja, la efectividad se reduce a una ordenación lineal y el optimizador de consultas evitará usar el índice si la cardinalidad es superior al 30 % del número de registro, lo que hace que el índice sea una pérdida de espacio.

Así que es mejor agregar la indexación en el grupo de columnas.