39. Índices en MySQL

En MySQL, para que nuestras consultas sean más rápidas, hemos de crear índices. Dichos índices no son propios del lenguaje SQL sino que cada sistema gestor de base de datos va a tener una forma diferente de colocar dichos índices.

Por ejm, siguiendo el ejm de nuestra tabla contactos, queremos incluir índices tanto el el campo nombre como en el campo apellidos, ya que en el futuro queremos hacer búsquedas sobre estos dos contactos. Para crear un índice vamos a la consola y escribimos la siguiente sintaxis.

Ejm

ALTER TABLE `ejemplo`.`contactos` ADD INDEX(nombre);

Posteriormente ejecutamos para que se cree el índice. Ahora cuando queramos hacer una consulta con respecto al campo nombre, MySQL ya no la va a buscar en toda la tabla sino que la va a buscar según un índice, de esta manera el resultado de búsqueda va a ser mucho más rápido.

Estos índices no van a ver su eficacia cuando tengamos unos cuantos cientos de registros, pero si nos van a beneficiar enormemente cuando estemos trabajando con miles de registros en nuestras tablas.

No es muy recomendable crear índices para cada una de las columnas de la tabla porque cada vez que creamos un índice estamos utilizando memoria, por lo que deberíamos limitar crear índices para aquellos campos que son susceptibles a hacer búsquedas.

Optimización de índices

Podríamos optimizar aún más la creación de nuestros índices, podríamos crear un índice sobre el campo nombre y que sólo utilice los primeros 20 caracteres. Su sintaxis sería.

Ejm

ALTER TABLE `ejemplo`.`contactos`ADD INDEX(nombre(20));

Hay que tener mucho cuidado con esta sentencia ya que podría conducir a errores.

Incluir índices cuando creemos una tabla

Su sintaxis sería

Ejm

CREATE TABLE `ejemplo`.`contactos2` (
`id` INT NOT NULL AUTO_INCREMENT,
`nombre` VARCHAR(255) NOT NULL,
`apellidos` VARCHAR(255) NOT NULL,
PRIMARY KEY(id),
INDEX(nombre),
INDEX(apellidos)
);    

En este ejm hemos agregado un índice de tipo PRIMARY y dos índices de tipo INDEX.