Programación en castellano
Inicio > Tutoriales > MySQL > Índices y optimización de consultas
-Tutoriales

Índices y optimización de consultas


Eliminar o cambiar un índice

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)
 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados