Base de datos MySQL - índice (6) - uso del índice (que cubre el índice y la consulta de retorno de tabla, el índice de prefijo, el índice de una sola columna y el índice conjunto), principios de diseño del índice, resumen del índice

Tabla de contenido

Uso del índice (Parte 2)

Cubriendo consulta de retorno de tabla e índice

Preguntas para pensar

índice de prefijo

gramática

Ejemplo

longitud del prefijo

Proceso de consulta del índice de prefijo.

Índice de columna única e índice conjunto 

Principios de diseño de índices

Resumen del índice

1. Descripción general del índice

2. Estructura del índice 

3. Clasificación del índice 

4. Sintaxis del índice

5.Análisis de rendimiento SQL 

6. Uso del índice 

7. Principios de diseño de índices 


Uso del índice (Parte 2)

Cubriendo consulta de retorno de tabla e índice

Un índice de cobertura significa que la consulta utiliza un índice y todas las columnas que deben devolverse se pueden encontrar en el índice.

Primero veamos el proceso de ejecución del siguiente conjunto de SQL para obtener una comprensión más profunda de cómo cubrir las consultas de retorno de índices y tablas.

Estructura de tabla y diagrama de índice: 

id es la clave principal y es un índice agrupado. Sobre el campo del nombre se establece un índice común, que es un índice secundario (índice auxiliar).

Ejecutar SQL:

select * from tb_user where id = 2;

De acuerdo con la consulta de identificación, utilizamos directamente la consulta de índice agrupado. Un escaneo de índice coincide con la identificación como 2. Debido a que los datos de fila se colocan debajo de los nodos de hoja en el índice agrupado, podemos obtener los datos que queremos y devolverlos directamente. con alto rendimiento.

Mirar de nuevo,

Ejecutar SQL:

selet id,name from tb_user where name = 'Arm';

Aunque la consulta se basa en el campo de nombre y se consulta el índice secundario, dado que los campos que devuelve la consulta son id y nombre, en el índice secundario de nombre se pueden obtener estos dos valores directamente, con esto se logra un índice de cobertura, por lo que no es necesario volver a consultar la tabla y el rendimiento es alto.

Último vistazo,

Ejecutar SQL:

selet id,name,gender from tb_user where name = 'Arm';

Dado que el género no está incluido en el índice secundario del nombre, se requieren dos exploraciones de índice, es decir, se requiere una consulta de tabla y el rendimiento es relativamente pobre.

Podemos observar el plan de ejecución de MySQL: todos los indicadores en el plan de ejecución de algunas declaraciones SQL son los mismos y no se puede ver ninguna diferencia. Sin embargo, queremos prestar atención al Extra que hay detrás:

Extra significado
Usando donde; Usando el índice La búsqueda utiliza un índice, pero los datos requeridos se pueden encontrar en las columnas del índice, por lo que no es necesario volver a la tabla para consultar los datos.
Usando la condición de índice La búsqueda utiliza un índice, pero necesita devolver la tabla para consultar los datos.

Por lo tanto, en el plan de ejecución, si Extra es "Usar condición de índice", es posible que sea necesario modificarlo y optimizarlo.

Preguntas para pensar

Una tabla tiene cuatro campos (id, nombre de usuario, contraseña, estado). Debido a la gran cantidad de datos, es
necesario optimizar la siguiente declaración SQL. La mejor solución es cómo proceder:

select id,username,password from tb_user where username = 'itcast';


Respuesta:

Cree un índice conjunto para nombre de usuario y contraseña,

El sql es: crear índice idx_user_name_pass en tb_user (nombre de usuario, contraseña);
esto puede evitar la declaración SQL anterior y la consulta de retorno de tabla durante el proceso de consulta.

índice de prefijo

Cuando el tipo de campo es una cadena (varchar, texto, texto largo, etc.), a veces es necesario indexar una cadena muy larga, lo que hará que el índice sea muy grande
y desperdiciará una gran cantidad de E/S del disco durante la consulta, lo que afectará la eficiencia de la consulta.

En este momento, solo puede prefijar parte de la cadena para crear un índice, lo que puede ahorrar mucho espacio en el índice y mejorar la eficiencia de la indexación.

gramática

create index idx_xxxx on table_name( column(n) );

Ejemplo

Cree un índice de prefijo de longitud 5 para el campo de correo electrónico de la tabla tb_user.

create index idx_email_5 on tb_user ( email(5) );

longitud del prefijo

Se puede determinar en función de la selectividad del índice , que se refiere a la relación entre los valores de índice únicos (cardinalidad) y el número total de registros en la tabla de datos . Cuanto mayor sea la selectividad del índice, mayor será la eficiencia de la consulta. la selectividad del índice único es 1. Esta es la mejor selectividad del índice y tiene el mejor rendimiento.

select count(distinct email) / count(*) from tb_user ;

select count(distinct substring(email,1,5)) / count(*) from tb_user ;

Proceso de consulta del índice de prefijo.

Índice de columna única e índice conjunto 

Índice de una sola columna : un índice contiene solo una columna.
Índice de unión : un índice contiene varias columnas.

En el plan de ejecución, si los dos campos teléfono y nombre son índices de una sola columna, pero al final MySQL solo seleccionará un índice, es decir, solo se puede usar el índice de un campo, en este momento la tabla se devolverá para consulta.

En un escenario empresarial, si existen múltiples condiciones de consulta, al considerar crear un índice en el campo de consulta, se recomienda crear un índice conjunto
en lugar de un índice de una sola columna.

Principios de diseño de índices

  1. Cree índices para tablas con grandes cantidades de datos y consultas frecuentes.
  2. Cree índices para campos que se utilizan a menudo como condiciones de consulta (dónde), operaciones de clasificación (ordenar por) y agrupación (agrupar por).
  3. Intente seleccionar columnas con alta discriminación como índices e intente crear índices únicos. Cuanto mayor sea la discriminación, más eficiente será el uso de los índices.
  4. Si es un campo de tipo cadena y la longitud del campo es larga, se puede establecer un índice de prefijo en función de las características del campo.
  5. Intente utilizar índices conjuntos y reduzca los índices de una sola columna. Al realizar consultas, los índices conjuntos a menudo pueden cubrir índices, ahorrar espacio de almacenamiento, evitar respaldos de tablas y mejorar la eficiencia de las consultas.
  6. Para controlar el número de índices, cuantos más índices, mejor, cuantos más índices, mayor será el costo de mantener la estructura del índice, lo que afectará la eficiencia de las adiciones, eliminaciones y modificaciones.
  7. Si una columna indexada no puede almacenar valores NULL, restríjala usando NOT NULL al crear la tabla. Cuando el optimizador sabe si cada columna contiene valores NULL, puede determinar mejor qué índice usar de manera más eficiente para la consulta.

Resumen del índice

1. Descripción general del índice

Los índices son estructuras de datos para una recuperación eficiente de datos.

2. Estructura del índice 

B+árbol

Picadillo

3. Clasificación del índice 

Índice de clave primaria, índice único, índice regular, índice de texto completo, índice agrupado, índice secundario.

4. Sintaxis del índice

crear índice [único] xxx en xxx(xxx);

mostrar índice de xxxx;

soltar el índice xxx en xxxx; 

5.Análisis de rendimiento SQL 

Frecuencia de ejecución, registro de consultas lento, perfil, explicación.

6. Uso del índice 

Índice de unión, invalidación de índice, solicitud SQL, índice de cobertura, índice de prefijo, índice conjunto/de una sola columna.

7. Principios de diseño de índices 

Tablas, campos, índices.


FIN 


Aprenda de: Programador Dark Horse - Curso de base de datos MySQL

Supongo que te gusta

Origin blog.csdn.net/li13437542099/article/details/133280459
Recomendado
Clasificación