English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderá cómo crear índices en tablas para mejorar el rendimiento de la base de datos.
El índice es una estructura de datos asociada a una tabla, que proporciona acceso rápido a las filas de la tabla basándose en los valores de una o más columnas (clave de índice).
Supongamos que en su base de datos hay unacustomers表,y usted desea usar la siguiente expresión para encontrar todos los clientes cuyos nombres comienzan con la letra A.
SELECT cust_id, cust_name, address FROM customers WHERE cust_name LIKE 'A%';
Para encontrar tales clientes, el servidor debe buscarcustomersExplorar cada fila de la tabla y verificar el contenido de la columna de nombres. Aunque puede funcionar bien para tablas con pocas filas, imagine que la tabla contenga un millón de filas, entonces la respuesta a la consulta puede tardar mucho tiempo. En este caso, puede acelerar el procesamiento aplicando un índice a la tabla.
Puede crear un índice utilizando la siguiente sentencia CREATE INDEX:
CREATE INDEX index_name ON table_name (column_name);
Por ejemplo, para crear un índice en la tabla de clientesnamePara crear un índice en una columna, puede usar:
CREATE INDEX cust_name_idx ON customers (cust_name);
Por defecto, el índice permitirá entradas repetidas y ordenará los elementos en orden ascendente. Para requerir entradas únicas en el índice, agregue la palabra clave UNIQUE después de CREATE, como se muestra a continuación:
CREATE UNIQUE INDEX cust_name_idx ON customers (cust_name);
En MySQL, puede ver los índices disponibles en una tabla específica, como se muestra a continuación:
mysql> SHOW INDEXES FROM customers \G
Consejo:Utilice \G en lugar de punto y coma (;) para terminar la sentencia SQL. Si los resultados son demasiado anchos para la ventana actual, se mostrarán en formato vertical en lugar del formato de tabla normal.
Usted también puede construir índices en múltiples columnas. Por ejemplo, supongamos que ya ha nombrado la tabla en la base de datosde usuarioscon columnasfirst_nameylast_nameY si accede a estas columnas con frecuencia, puede crear un índice en dos columnas juntas para mejorar el rendimiento de los registros de usuarios, como se muestra en la siguiente imagen:
CREATE INDEX user_name_idx ON users (first_name, last_name);
Consejo:Puede considerar el índice de la base de datos como la parte de índice de un libro, que le ayuda a buscar o localizar rápidamente temas específicos en el libro.
Los índices deben crearse con cautela. Porque cada vez que se agrega, actualiza o elimina una fila en la tabla, se deben modificar todos los índices de la tabla. Por lo tanto, cuanto más índices tenga, más trabajo tendrá que realizar el servidor, lo que eventualmente llevará a una disminución en el rendimiento.
A continuación, se presentan algunas pautas básicas que se pueden seguir al crear índices:
Cree índices para las columnas que utiliza con frecuencia para recuperar datos.
No cree índices para columnas que nunca se han utilizado como claves de búsqueda.
Columnas de índice utilizadas para mejorar el rendimiento de la unión.
Evite incluir columnas con demasiados valores NULL.
Del mismo modo, la tabla pequeña no necesita índices, porque en el caso de las tablas pequeñas, la exploración del servidor de la tabla generalmente es más rápida que la consulta de índices.
Nota:Al crear una tabla, la mayoría de los sistemas de bases de datos (como MySQL, SQL Server, etc.) crean automáticamente índices para la tablaPRIMARY KEYyUNIQUECrear índice en columna
Puede usar la siguiente sentencia para eliminar índices no necesarios.
DROP INDEX index_name ON table_name;
La siguiente sentencia eliminará los índices desdecustomersEliminar índice de tablacust_name_idx。
DROP INDEX cust_name_idx ON customers;
Además, siEliminar tabla,Luego también se eliminarán todos los índices relacionados.
Advertencia:Antes de eliminar un índice, debe verificar los efectos que esto causará. Como regla general, no cree ni elimine índices a ciegas.