Saltar al contenido

MySQL – ÍNDICES

octubre 20, 2021

Un índice de base de datos es una estructura de datos que mejora la velocidad de las operaciones en una tabla. Los índices se pueden crear usando una o más columnas, proporcionando la base tanto para búsquedas aleatorias rápidas como para ordenar eficientemente el acceso a los registros.

Al crear el índice, debe tenerse en cuenta qué columnas se utilizarán para realizar consultas SQL y crear uno o más índices en esas columnas.

En la práctica, los índices también son un tipo de tablas, que mantienen la clave principal o el campo de índice y un puntero a cada registro en la tabla real.

Los usuarios no pueden ver los índices, solo se utilizan para acelerar las consultas y serán utilizados por el motor de búsqueda de la base de datos para localizar registros muy rápido.

Las sentencias INSERT y UPDATE toman más tiempo en tablas que tienen índices, mientras que las sentencias SELECT se vuelven rápidas en esas tablas. La razón es que mientras se inserta o actualiza, una base de datos también necesita insertar o actualizar los valores del índice.

Índice simple y único

Puede crear un índice único en una tabla. Un índice único significa que dos filas no pueden tener el mismo valor de índice. Aquí está la sintaxis para crear un índice en una tabla.

CREATE UNIQUE INDEX index_name ON table_name ( column1, column2,...);

Puede utilizar una o más columnas para crear un índice.

Por ejemplo, podemos crear un índice en tutorials_tbl utilizando tutorial_author.

CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author)

Puede crear un índice simple en una tabla. Simplemente omita el ÚNICO palabra clave de la consulta para crear un índice simple. Un índice simple permite valores duplicados en una tabla.

Si desea indexar los valores en una columna en orden descendente, puede agregar la palabra reservada DESC después del nombre de la columna.

mysql> CREATE UNIQUE INDEX AUTHOR_INDEX ON tutorials_tbl (tutorial_author DESC)

ALTER comando para agregar y soltar ÍNDICE

Hay cuatro tipos de declaraciones para agregar índices a una tabla:

  • ALTER TABLE tbl_name AÑADIR CLAVE PRIMARIA (column_list) – Esta declaración agrega un CLAVE PRIMARIA, lo que significa que los valores indexados deben ser únicos y no pueden ser NULL.

  • ALTER TABLE tbl_name AÑADIR UNIQUE index_name (column_list) – Esta declaración crea un índice para el cual los valores deben ser únicos (excepto los valores NULL, que pueden aparecer varias veces).

  • ALTER TABLE tbl_name ADD INDEX index_name (column_list) – Esto agrega un índice ordinario en el que cualquier valor puede aparecer más de una vez.

  • ALTER TABLE tbl_name AÑADIR FULLTEXT index_name (column_list) – Esto crea un índice FULLTEXT especial que se utiliza con fines de búsqueda de texto.

El siguiente bloque de código es un ejemplo para agregar índice en una tabla existente.

mysql> ALTER TABLE testalter_tbl ADD INDEX (c);

Puede eliminar cualquier ÍNDICE utilizando el SOLTAR cláusula junto con el comando ALTER.

Pruebe el siguiente ejemplo para eliminar el índice creado anteriormente.

mysql> ALTER TABLE testalter_tbl DROP INDEX (c);

Puede eliminar cualquier ÍNDICE utilizando la cláusula DROP junto con el comando ALTER.

ALTER Comando para agregar y soltar la LLAVE PRIMARIA

También puede agregar una clave principal de la misma manera. Pero asegúrese de que la clave principal funcione en columnas, que NO sean NULL.

El siguiente bloque de código es un ejemplo para agregar la clave principal en una tabla existente. Esto hará que una columna NO sea NULA primero y luego la agregará como clave principal.

mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

Puede usar el comando ALTER para eliminar una clave principal de la siguiente manera:

mysql> ALTER TABLE testalter_tbl DROP PRIMARY KEY;

Para eliminar un índice que no es una CLAVE PRINCIPAL, debe especificar el nombre del índice.

Visualización de información de ÍNDICE

Puedes usar el MOSTRAR ÍNDICE comando para enumerar todos los índices asociados con una tabla. La salida de formato vertical (especificada por G) a menudo es útil con esta declaración, para evitar una larga línea envolvente:

Pruebe el siguiente ejemplo:

mysql> SHOW INDEX FROM table_nameG
........
close