Índices en MySQL
Manejo de índices en MySQL
Los índices en MySQL son referencias en forma de listas ordenadas que devuelven resultados de una consulta a una tabla de forma eficiente. Permiten devolver resultados de forma más rápida, pero conllevan un espacio adicional en disco y un mayor tiempo de ejecución con los comandos INSERT, UPDATE y DELETE, ya que tiene que actualizarse el registro de los índices.
Clave o llave primaria. Identifica de forma única la fila de una tabla. El valor tiene que ser único (como UNIQUE) pero solo puede existir una sola clave primaria en una tabla y no permite valores NULL.
Creando la tabla:
CREATE TABLE [tabla](campo1,campo2...)
PRIMARY KEY ([campo1],[campo2]);
Actualizando la tabla:
ALTER TABLE [tabla] ADD PRIMARY KEY ([campo1], [campo2])
UNIQUE
El tipo de índice unique es similar al índice normal pero a diferencia del normal es que su valor tiene que ser único (no permite duplicados).
Creando la tabla:
CREATE TABLE [tabla]([campo1],[campo2]..)
UNIQUE [nombre_indice] (campo1,campo2...)
Actualizando la tabla:
ALTER TABLE [tabla] ADD UNIQUE [nombre_indice] ([campo1],[campo2])
INDEX
El índice normal o no único permite crear índices(llaves) en una o varias columnas y su valor no tiene porque ser único.
Creando la tabla:
CREATE TABLE [tabla]([campo1],[campo2]..)
INDEX [nombre_indice] (campo1,campo2...)
CREATE UNIQUE INDEX [nombre_indice] ON [tabla]([campo1],[campo2])
Actualizando la tabla:
ALTER TABLE [tabla] ADD INDEX [nombre_indice] ([campo1],[campo2])
FULL TEXT
Índices específicos para búsquedas de cadenas pero solo pueden realizarse en campos CHAR,VARCHAR Y TEXT.
CREATE TABLE [tabla]([campo1],[campo2]..)
FULL TEXT [nombre_indice] (campo1,campo2...)
CREATE FULL TEXT INDEX [nombre_indice] ON [tabla](campo1,campo2...)
ALTER TABLE [tabla] ADD FULL TEXT [nombre_indice] ([campo1],[campo2])
SPATIAL
Índices específicos para búsquedas de datos geométricos relacionados con el espacio(spatial).
Nota: FULL TEXT Y SPATIAL son solo soportados por InnoDB y MyISAM en MySQL 5.7
PARCIALES:
Índices que usan parte de un campo CHAR O VARCHAR. Al usar menos caracteres los INSERT y UPDATE son más rápidos.
ALTER TABLE [tabla] ADD INDEX
[nombre_indice](campo1(20), campo2(20))
Eliminar o cambiar índice: Para eliminar un INDEX, UNIQUE O FULL TEXT debemos indicar el nombre del índice.
ALTER TABLE [tabla] DROP PRIMARY KEY
ALTER TABLE [tabla] DROP INDEX [nombre_indice]
DROP INDEX [nombre_indice] ON [tabla]
Mostrar índices de una tabla:
SHOW KEYS FROM [tabla]
Para poder comentar es necesario iniciar sesión