Í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

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.