Completo ==== Ver el plan de ejecución a través de explicar

Ver la explicación específica de explicar y sugerencias para crear índices

Inserte la descripción de la imagen aquí
id: orden de lectura de la tabla
select_type: indica el tipo de consulta.
table: la tabla del conjunto de resultados de salida
tipo: el tipo de conexión de la tabla
possible_keys: el índice que se puede usar durante la consulta
key: el índice realmente usado
key_len: la longitud del campo de índice
ref: la comparación entre la columna y las
filas del índice : la fila escaneada Número (número estimado de filas)
Extra: Descripción y explicación de la ejecución

CREATE TABLE testidx(
idbigint (20) NOT NULL AUTO_INCREMENT,
abigint (11) DEFAULT NULL,
bvarchar (100) NOT NULL,
cvarchar (100) NOT NULL,
dvarchar (100) NOT NULL,
PRIMARY KEY ( id),
KEY idx_a( a),
KEY idx_b( b),
KEY idx_bc( b, c),
KEY idx_abc( a, b, c)
)

  1. Tipo de campo
    Solución

Leer: El
método de acceso a la tabla indica la forma en que MySQL encuentra la fila requerida en la tabla, también conocida como "tipo de acceso".
Los tipos más utilizados son: ALL, index, range, ref, eq_ref, const, system, NULL (de izquierda a derecha, rendimiento de pobre a bueno)
ALL: Full Table Scan, MySQL recorrerá toda la tabla para encontrar el
índice de fila correspondiente : Escaneo de índice completo, la diferencia entre índice y TODO es que el tipo de índice solo atraviesa el
rango del árbol de índice : solo recupera filas en un rango dado y usa un índice para seleccionar filas
ref: indica la condición de coincidencia de conexión de la tabla anterior, es decir, qué columnas o constantes se usan para buscar El valor
eq_ref en la columna de índice : similar a ref, la diferencia es que el índice usado es un índice único. Para cada valor de clave de índice, solo hay un registro en la tabla que coincide. En términos simples, la clave principal o clave única se usa en la conexión de múltiples tablas. Condiciones asociadas
const, system: cuando MySQL optimiza una determinada parte de la consulta y la convierte en una constante, se utilizan estos tipos de acceso. Si la clave principal se coloca en la lista where, MySQL puede convertir la consulta en una constante. El sistema es un caso especial del tipo const. Cuando la tabla de consultas tiene solo una fila, use el sistema
NULL: MySQL descompone la declaración durante el proceso de optimización y la ejecuta. Ni siquiera es necesario acceder a la tabla o al índice, por ejemplo, se puede seleccionar el valor mínimo de una columna de índice mediante una búsqueda de índice separada.


Inserte la descripción de la imagen aquí
rango de referencia
Inserte la descripción de la imagen aquí

índice
Inserte la descripción de la imagen aquí
2. Interpretación de possible_keys y key fields:

possible_keys
indica qué índices puede usar MySQL, pero no necesariamente se pueden consultar usando (la consulta puede usar el índice, si el índice no muestra ningún nulo)
.
Clave La columna de clave muestra la clave (índice) que MySQL realmente decidió usar, debe incluirse en possible_keys
para poder Obligar a MySQL a usar o ignorar el índice en la columna possible_keys y usar FORCE INDEX, USE INDEX o IGNORE INDEX en las consultas.

Inserte la descripción de la imagen aquí
3. Interpretación del campo key_len:
indica el número de bytes usados ​​en el índice, y la longitud del índice usada en la consulta se puede calcular a través de esta columna. Para las tablas almacenadas en el juego de caracteres utf8, cada carácter ocupa 3 bytes,

A través de key_len, puede saber qué campos se utilizan en el índice compuesto. El cálculo de key_len:

Cuando la definición del campo puede estar vacía, se necesita un byte adicional para registrar si está vacío.Cuando el campo se define como no nulo, este byte adicional no es necesario.

Cuando el campo se define como un tipo de datos de longitud variable (como varchar), se requieren 2 bytes adicionales para registrar su longitud; cuando el campo se define como un tipo de datos de longitud fija (como int, char, datetime, etc.), este extra No se necesitan 2 bytes.

Inserte la descripción de la imagen aquí
Observaciones: los datos varchar (100) ocupan 300 bytes, más 2 bytes para indicar la longitud del campo

  1. Interpretación de campo adicional:
    usando dónde: en el caso de buscar y usar un índice, debe volver a la tabla para consultar los datos requeridos.
    Usando índice y usando dónde: busque usando un índice, pero los datos requeridos se pueden encontrar en la columna de índice, por lo que no es necesario Volver a los datos de consulta de la tabla
    utilizando la condición de índice: la búsqueda utiliza el índice, es necesario volver a los datos de consulta de la tabla. El empuje condicional es una característica que apareció después de la versión mysqlV5.6, el filtrado directo de filas en el índice secundario puede reducir la capa del motor y la capa del servidor Interacción.

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

  1. Interpretación de campo adicional:
    uso temporal: indica que MySQL necesita usar una tabla temporal para almacenar el conjunto de resultados, común en la clasificación y agrupación de consultas, común agrupar por; ordenar por
    Uso de filesort: cuando la consulta contiene ordenar por, agrupar por y otras operaciones de clasificación, y no puede usarse La operación de clasificación realizada por el índice se denomina "clasificación de archivos".
    "La verdad es que el ordenamiento de archivos tiene un nombre incorrecto. Siempre que no se puede realizar un ordenamiento desde un índice, es un ordenamiento de archivos. No tiene nada que ver con los archivos. El ordenamiento de archivos debe llamarse“ ordenamiento ”. En el fondo, es un ordenamiento rápido".

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Principios de creación de índices

1. Cree índices en esas columnas para tablas grandes
, campos que aparecen en la cláusula Where, campos
que están conectados a otras tablas y campos
que deben ordenarse (ordenar por o agrupar por)

2. Mal caso:
cree un índice en un campo innecesario, cree un índice
repetidamente, cree un índice
en una columna con baja selectividad y colóquelo en la parte superior del índice.
Demasiados índices (por ejemplo, más de 7)

Supongo que te gusta

Origin blog.csdn.net/shunnianlv/article/details/109094758
Recomendado
Clasificación