Índices y optimización de consultas

Algunas veces tendremos la necesidad de cambiar o eliminar un �ndice. Cuando hagamos alg�n cambio en el �ndice, necesitamos eliminar primero el �ndice y entonces reconstruirlo con la nueva definici�n.

Para eliminar un �ndice de clave primaria podemos usar la siguiente sintaxis:

ALTER TABLE nombreTabla DROP PRIMARY KEY;

Para eliminar un �ndice ordinario, �nico, o de texto completo, necesitamos especificar el nombre del �ndice y usar esta sintaxis:

ALTER TABLE nombreTabla DROP INDEX nombreIndice;

Tambi�n es v�lida esta otra sintaxis:

DROP INDEX nombreIndice ON nombreTabla;

Si no estamos seguros de cu�l es el nombre del �ndice que deseamos eliminar, podemos hacer uso de la sentencia SHOW KEYS:

SHOW KEYS FROM nombreTabla;

Este es un ejemplo.

CREATE TABLE usuarios
(
   id INT NOT,
   nombre VARCHAR(50) NOT NULL,
   apellidos VARCHAR(70) NOT NULL,
   PRIMARY KEY (id),
   INDEX (nombre, apellidos)
);

Veamos los �ndices que existen en esta tabla:

mysql> SHOW KEYS FROM usuarios;
+----------+------------+----------+--------------+-------------+
| Table    | Non_unique | Key_name | Seq_in_index | Column_name |
+----------+------------+----------+--------------+-------------+  .
| usuarios |          0 | PRIMARY  |            1 | id          |  .
| usuarios |          1 | nombre   |            1 | nombre      |  .
| usuarios |          1 | nombre   |            2 | apellidos   |
+----------+------------+----------+--------------+-------------+

3 rows in set (0.00 sec)

La tercera columna es la que nos proporciona los nombres de los �ndices. Podemos observar que al no especificar un nombre al �ndice ordinario en (nombre, apellidos), se le ha asignado el nombre de la primera columna que forma el �ndice.

A continuaci�n vamos a eliminar los dos �ndices que existen en esta tabla:

mysql> ALTER TABLE usuarios DROP PRIMARY KEY;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE usuarios DROP INDEX nombre;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

Por �ltimo, podemos verificar que estos �ndices ya no existen:

mysql> SHOW KEYS FROM usuarios;
Empty set (0.00 sec)

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP