Explicación detallada de los resultados de MYSQL EXPLAIN

EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况。
EXPLAIN不考虑各种Cache(缓存)。
EXPLAIN不能显示MySQL在执行查询时所作的优化工作。
部分统计信息是估算的,并非精确值。	
EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划。

1 identificación

select的识别符,这是select的查询序列号。
如果有两列数据id相同,则为同一组查询,由上到下执行。
如果id值不同,id值越大,优先级越高。

2 select_type

select的类型

SIMPLE (simple): Simple SELECT (no usa UNION ni subconsultas).
PRIMARY (primaria): la consulta más externa en la subconsulta. Si la consulta contiene subpartes complejas, la selección más externa se marca como PRIMARY.
UNION (unión): la segunda instrucción SELECT o la siguiente en UNION.
DEPENDENT UNION (unión dependiente): la segunda instrucción SELECT o la siguiente en UNION, según la consulta externa.
RESULTADO DE UNIÓN (resultado de unión): El resultado de UNION, la segunda selección en la declaración de unión comienza con todas las selecciones.
SUBQUERY (subconsulta): El primer SELECT en la subconsulta, el resultado no depende de la consulta externa.
SUBQUERY DEPENDIENTE (subconsulta dependiente): El primer SELECT en la subconsulta depende de la consulta externa.
DERIVED (derivado): SELECT (subconsulta de la cláusula FROM) de la tabla derivada.
SUBQUERY INCACHEABLE (subconsulta incacheable): (El resultado de una subconsulta no se puede almacenar en caché, la primera línea del enlace externo debe ser reevaluada)

3 mesa

输出结果集的表名称。

4 particiones

输出结果集的表所在的分区

5 TIPO

type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
Null > system > const > eq_ref > ref > ref_or_null> index_merge > unique_subquery > index_subquery > range > index > ALL

En general, es necesario asegurarse de que la consulta alcance al menos el nivel de rango, preferiblemente ref.
Cuando realizamos consultas condicionales, se recomienda utilizar un índice; de ​​lo contrario, se producirá un escaneo completo de la tabla y no se pueden garantizar la sobrecarga de E / S ni el rendimiento del programa.

NULL : MySQL descompone la declaración durante el proceso de optimización y ni siquiera necesita acceder a la tabla o al índice durante la ejecución. Por ejemplo, la selección del valor mínimo de una columna de índice se puede realizar mediante una búsqueda de índice separada.
sistema : La tabla tiene una sola fila (= tabla del sistema). Este es un caso especial del tipo de unión const. Cuando MySQL optimiza una determinada parte de la consulta y la convierte en una constante, utilice estos tipos (sistema / const) para acceder. Si la clave principal se coloca en la lista where, MySQL puede convertir la consulta en una constante. Cuando la tabla de consulta tiene solo una fila, use system.
const : la tabla tiene como máximo una fila coincidente, que se leerá al comienzo de la consulta. Como solo hay una fila, el resto del optimizador puede considerar constantes los valores de columna de esta fila. Las tablas const son rápidas porque solo se leen una vez.
eq_ref : similar a ref, la diferencia es que el índice utilizado es un índice único. Para cada valor de clave de índice, solo hay un registro en la tabla que coincide. En pocas palabras, la clave principal o clave única se utiliza como condición de asociación en la conexión de varias tablas. Este es probablemente el mejor tipo de conexión, excepto el tipo const.
ref : indica la condición de coincidencia de conexión de la tabla anterior, es decir, qué columnas o constantes se utilizan para encontrar el valor en la columna de índice.
ref_or_null : el tipo de conexión es como ref, pero MySQL puede buscar específicamente filas que contengan valores NULL.
index_merge : este tipo de conexión indica que se utiliza el método de optimización de fusión de índices. [No se usa comúnmente]
unique_subquery: Este tipo reemplaza la referencia de la subconsulta IN de la siguiente forma: valor IN (SELECT primary_key FROM single_table WHERE some_expr) unique_subquery es una función de búsqueda de índice, que puede reemplazar completamente las subconsultas y es más eficiente. [No se usa comúnmente]
index_subquery : este tipo de conexión es similar a unique_subquery. Puede reemplazar las subconsultas IN, pero solo es adecuado para índices no únicos en subconsultas de la siguiente forma: valor IN (SELECT key_column FROM single_table WHERE some_expr).
Rango [No se usa comúnmente] : solo recupera filas en un rango dado y usa un índice para seleccionar filas.
index : El tipo de conexión es el mismo que ALL, Full Index Scan, la diferencia entre index y ALL es que el tipo de índice solo atraviesa el árbol del índice. Esto suele ser más rápido que TODOS, porque los archivos de índice suelen ser más pequeños que los archivos de datos.
TODO : Escaneo de tabla completo, MySQL recorrerá toda la tabla para encontrar filas coincidentes.

6 teclas_posibles

表示查询时,可能使用的索引。( MySQL能使用哪个索引在该表中找到行)

7 clave

实际使用的索引(键),必然包含在possible_keys中。如果没有选择索引,索引是NULL。
要想强制MySQL使用或忽视possible_keys列中的索引,
在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。

8 key_len

索引的长度 ( 使用的字节数 )。如果索引是NULL,则长度为NULL。
不损失精确性的情况下,长度越短越好 。key_len显示的值为索引字段的最大可能长度,
并非实际使用长度,即key_len是根据表定义计算而得,不是通过表内检索出的。

9 ref

La columna o constante que se usa, junto con el índice, se usa para encontrar el valor en la columna indexada de la tabla. (La comparación entre la columna y el índice indica la condición de coincidencia de conexión de la tabla anterior).

10 filas

MySQL认为它执行查询时必须检查的行数既预估扫描的行数。

11 filtrado

通过表条件过滤出的行数的百分比估计值。

12 extra

Mysql执行情况的描述和详细说明。

Distinto : después de que MySQL encuentra la primera fila coincidente, deja de buscar más filas para la combinación de filas actual.
No existe : MySQL puede realizar la optimización LEFT JOIN en la consulta. Después de encontrar una fila que coincida con el estándar LEFT JOIN, no comprobará más filas en la tabla para la combinación de filas anterior.
rango verificado para cada registro (mapa de índice: #): MySQL no encontró un buen índice que se pueda usar, pero encontró que si se conoce el valor de la columna de la tabla anterior, algunos índices pueden estar disponibles.
Uso de ordenación de archivos : cuando la consulta contiene un orden por operación y la operación de ordenación que no se puede realizar mediante el índice se denomina "ordenación de archivos".
Uso de índice : utilice solo la información del árbol de índice sin realizar una búsqueda adicional para leer la fila real y recuperar la información de la columna en la tabla.
Uso temporal : para resolver la consulta, MySQL necesita crear una tabla temporal para contener el conjunto de resultados, que es común en la clasificación y agrupación de consultas, y el grupo común por y ordenar por.
Usando donde : Sin leer toda la información en la tabla, los datos requeridos se pueden obtener solo a través del índice. Esto sucede cuando todas las columnas solicitadas de la tabla son parte del mismo índice, lo que significa que el servidor mysql recuperará filas en el motor de almacenamiento. Filtrar después.
Usando sort_union (...), usando union (...), usando intersect (...) : estas funciones explican cómo fusionar escaneos de índice para tipos de unión index_merge.
Usar índice para agrupar por: Similar al método Usar índice para acceder a la tabla, Usar índice para agrupar significa que MySQL ha encontrado un índice que se puede usar para consultar todas las columnas en la consulta GROUP BY o DISTINCT, sin tener que buscar en el disco duro para acceder a la tabla real.
Uso del búfer de unión : el valor modificado enfatiza que el índice no se usa al obtener las condiciones de conexión y que el búfer de conexión es necesario para almacenar resultados intermedios. Si aparece este valor, debe tenerse en cuenta que, dependiendo de la situación específica de la consulta, es posible que sea necesario agregar un índice para mejorar el rendimiento.
Donde imposible : este valor enfatiza que la instrucción where no conducirá a filas elegibles (es imposible obtener resultados mediante la recopilación de estadísticas).
Seleccionar tablas optimizadas : este valor significa que solo al usar el índice, el optimizador solo puede devolver una fila del resultado de la función agregada.
No se usan tablas : use from dual en la instrucción Query o no contenga ninguna cláusula from.

Supongo que te gusta

Origin blog.csdn.net/qq_37823979/article/details/107461893
Recomendado
Clasificación