MySQLi - ÍNDICES
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 utilizando una o más columnas, lo que proporciona la base tanto para búsquedas aleatorias rápidas como para ordenar eficazmente el acceso a los registros.
Al crear un índice, se debe considerar cuáles son las columnas que se utilizarán para realizar consultas SQL y crear uno o más índices en esas columnas.
Prácticamente, los índices también son tipos 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 el motor de búsqueda de bases de datos los utilizará para localizar registros muy rápidamente.
Las declaraciones INSERT y UPDATE toman más tiempo en tablas que tienen índices, mientras que las declaraciones SELECT se vuelven rápidas en esas tablas. La razón es que mientras se inserta o actualiza, la base de datos también necesita insertar o actualizar valores de í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_inf usando NAME_INDEX.
CREATE UNIQUE INDEX NAME_INDEX ON tutorials_inf(name);
Puede crear un índice simple en una tabla. Simplemente omita la palabra clave ÚNICA de la consulta para crear un índice simple. El í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 NAME_INDEX ON tutorials_inf (name DESC);
ALTER comando para agregar y soltar INDICE
Hay cuatro tipos de declaraciones para agregar índices a una tabla:
ALTER TABLE tbl_name ADD PRIMARY KEY (column_list) - Esta declaración agrega una CLAVE PRIMARIA, lo que significa que los valores indexados deben ser únicos y no pueden ser NULL.
ALTER TABLE tbl_name ADD UNIQUE index_name (column_list) - Esta declaración crea un índice para el cual los valores deben ser únicos (con la excepción de 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 ADD FULLTEXT index_name (column_list) - Esto crea un índice FULLTEXT especial que se utiliza para fines de búsqueda de texto.
Aquí está el ejemplo para agregar índice en una tabla existente.
mysql> ALTER TABLE tutorials_inf ADD INDEX (id);
Puede eliminar cualquier ÍNDICE utilizando la cláusula DROP junto con el comando ALTER. Pruebe el siguiente ejemplo para eliminar el índice creado anteriormente.
mysql> ALTER TABLE tutorials_inf DROP INDEX (c);
Puede eliminar cualquier ÍNDICE utilizando la cláusula DROP junto con el comando ALTER. Pruebe el siguiente ejemplo para eliminar el índice creado anteriormente.
ALTER Comando para agregar y soltar PRIMARY KEY
También puede agregar la clave principal de la misma manera. Pero asegúrese de que Primary Key funcione en columnas, que NO sean NULL.
Este es el ejemplo para agregar una 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 tutorials_inf MODIFY id INT NOT NULL;
mysql> ALTER TABLE tutorials_inf ADD PRIMARY KEY (id);
Puede usar el comando ALTER para eliminar una clave principal de la siguiente manera:
mysql> ALTER TABLE tutorials_inf 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
Puede usar el comando SHOW INDEX 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 líneas largas envolventes:
Prueba el siguiente ejemplo
mysql> SHOW INDEX FROM table_name\G
........