Crear índices en MySQL

Crear índices en MySQL

¡Hola, bienvenidos y bienvenidas! Dando continuidad al curso MySQL 8, hoy veremos cómo crear índices en MySQL.

En los primeros capítulos vimos cómo crear la estructura de nuestras tablas de la base de datos “clínica-veterinaria” y también vimos como ir llenando de datos todas nuestras tablas.

Cuando nuestra base de datos empieza a llenarse de información con cientos y miles de registros se ve la necesidad de mejorar el tiempo de ejecución de nuestras consultas SELECT, WHERE. Esto porque a nadie le gustaría esperar varios segundos o minutos en realizar una búsqueda de alguna información.

Los índices nos permiten optimizar los tiempos en las búsquedas de información, así contar con mejor rendimiento de la base de datos y de nuestra aplicación.

¡Empecemos!

¿Qué son los índices?

Los índices son estructuras de datos que se utilizan para mejorar la eficiencia en la búsqueda y recuperación de registros en una tabla. Los índices actúan como una guía rápida para la base de datos, permitiéndole encontrar los datos que coinciden con ciertos criterios de búsqueda de manera más eficiente, en lugar de tener que escanear toda la tabla fila por fila (La diferencia se nota aún más si se cuenta con grandes volúmenes de datos).

Tipo de índices

MySQL cuenta con los siguientes tipos de índices:

PRIMARY:  Permite crear índices de un único valor sobre una columna. Este tipo de índices permite crear en una sola columna por cada tabla y no permite valores nulos.

INDEX: Permite crear índices sobre una o varias columnas que compartan el índice; este tipo de índice no aplica ninguna característica especial, simplemente mejora el tiempo de ejecución de la consulta.

UNIQUE: Permite crear índices de un único valor por columna (la columna no admite valores duplicados), es similar al índice PRIMARY con la diferencia de que una tabla puede tener más de un índice UNIQUE.

FULLTEXT: Permite crear índices para realizar búsquedas por palabras que están contenidas en un texto de una columna, este tipo de índice se aplica a columnas de tipo CHAR, VARCHAR y TEXT.

SPATIAL: Permite crear índices sobre datos geométricos para búsquedas que correspondan sólo a este tipo de dato. Solo está disponible para base de datos InnoBD, MyISAN y MySQL 5.7.

Agregar un índice

Para agregar un índice en una tabla utilizaremos nuestra base de datos “clínica_veterinaria”. Utilizaremos la tabla “Clientes” para crear índices en los campos “Nombre” y “Apellido”.

Utilizaremos una sentencia SQL para crear un índice en el campo “Nombre”.

ALTER TABLE clinica_veterinaria.clientes ADD INDEX(nombre);

De igual manera, crearemos un índice para el campo “Apellido”.

ALTER TABLE clinica_veterinaria.clientes ADD INDEX(apellido);

Al momento de realizar las consultas de búsqueda por estos campos, en consultas normales aplicando las sentencias SELECT, WHERE, etc. Se ve la mejora en el rendimiento de las búsquedas (solo se notará la diferencia de rendimiento cuando en la base de datos excita cientos y miles de datos).

SELECT * FROM clinica_veterinaria.clientes
WHERE clinica_veterinaria.clientes.nombre LIKE "%daniel%";

Conclusión

Los índices ayudan a optimizar el tiempo de ejecución de las consultas mejorando el rendimiento. Sin embargo, se debe tener precaución al momento de crear los índices ya que podrían aumentan el tiempo de otros tipos de consultas, por esto lo recomendable es que no todas las columnas sean índices porque si bien minimizan el tiempo de las consultas, aumentan el tiempo de ejecución de los otros tipos de consultas como CREATE, UPDATE o DELETE, ocupando un espacio extra de memoria.

Para tener un buen rendimiento de la base de datos es esencial realizar una buena configuración de los índices en los campos requeridos y probar si existe un mejor rendimiento.

Si tienes alguna duda o comentario de índices en MySQL déjanos un mensaje en los comentarios de este post. Si quieres profundizar más en este tema puedes ver la documentación de MySQL en su página oficial.

En la siguiente clase veremos lo que son las Subconsulta en MySQL.

¡Te espero en la próxima clase!

Saludos y éxitos.

Victor Peña

Victor Peña

Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *