declaración de MySQL SQL Optimizer explicar palabras clave

contorno

En este gran datos, el flujo de las veces, nuestro sitio web no es sólo el flujo de tráfico, la cantidad de datos será muy grande. Necesitamos saber los datos exactos de la enorme cantidad de datos, esta base de datos relativamente gran presión sobre nosotros. Y cuando no tenemos en cuenta la operación de la sub-biblioteca subtabla, una optimización de SQL es una buena solución, aquí explainsentencias SQL análisis de palabras clave y utilizan índices para optimizar consultas.

explainpalabra clave

explainUtilice el formato

	EXPLAIN SELECT
	*
	FROM
		SCORE
	WHERE
		CNO = '3-105'
	AND DEGREE > (
		SELECT
			DEGREE
		FROM
			SCORE
		WHERE
			SNO = 109
	)

resultados de la consulta

carné de identidad seleccione tipo mesa tipo possible_keys llave key_len árbitro filas extra
1 PRIMARIO PUNTUACIÓN TODOS nulo nulo nulo nulo 12 utilizando, cuando
2 subconsulta PUNTUACIÓN TODOS nulo nulo nulo nulo 12 utilizando, cuando

explainFormar cada análisis de atributos

  • id: Seleccione el número de secuencia de la consulta, contiene un conjunto de números que indica el orden de las cláusulas o seleccionar una tabla de operación de ejecución de la consulta
  1. ID es el mismo, el orden de arriba a abajo
  2. ID no es lo mismo, de la identificación si un número de sub-consulta se incrementa, mayor de id el valor mayor es la prioridad, el primero en ser ejecutado ,, valor id mayor en todos los grupos de mayor prioridad
  • select_type: Ordenar, diferencia principal es consulta normal, la consulta de unión, sub consulta y otras consultas complejas
  1. simpleUna simple consulta, no contiene una subconsulta
  2. primary: Contiene sub-consultas, consultas para el exterior
  3. subquery: subconsulta
  4. derived: Mesa Derivado, tabla virtual
  5. union: Palabra clave aparece unión
  6. union select: resultados de la consulta de la Unión
  • table: Nombre de la tabla de consulta
  • type: La información contenida en el plan de ejecución, mostrando qué tipo de usos de la consulta
type类型从最好到最差

system > const > eq_ref > ref > range >index > all
  1. system: La tabla es sólo un registro (igual a las tablas del sistema), que es constuna especie de caso especial, por lo general no se produce, esto puede ser ignorada.
  2. const: Representa el tiempo por un índice de encontrar, constpara la comparación primary key, o unionel índice, ya que sólo una fila de datos coinciden, por lo pronto, ya que se colocará en la clave principal.
  3. eq_ref: Recorrido de índice único, para cada clave de índice, sólo un registro en el partido de la tabla. clave primaria común o recorrido de índice único
  4. ref: Vuelve índice no único escaneo todas las filas que coincidan con las condiciones. En esencia es un tipo de índice, que devuelve todos a juego un individuo digno de toda la línea, sin embargo, puede tener que encontrar la fila más calificado, por lo que debería pertenecer a la búsqueda y la exploración para obtener un cuerpo mixto.
  5. range: Recuperar sólo un rango determinado de la línea, utilizando el índice para seleccionar las filas. espectáculos de columna de clave, que el índice de utilización, generalmente aparecen en su estado en el que entre, <,>, en otras investigaciones, una exploración de dicho rango es mejor que un escaneo completo de tabla, debido a un cierto punto en el índice sólo tiene que empezar, y un cierto punto final, no una mesa de exploración completa.
  6. index: Índice de exploración completa, indexy allla diferencia es indexel tipo de atravesar sólo el árbol de índice. Esta relación es generalmente allmás rápido, debido a que el archivo de índice es generalmente más pequeño que el archivo de datos (es decir embargo ally indexson escaneo completo de tabla, pero indexse explora desde el archivo de índice alles leído por el disco duro)
  7. all: Escaneo completo de tabla
  • possible_keys: Muestra el índice pueden aplicar a la consulta, uno o más. Búsquedas similares a la existencia de los campos de índice, serán listados en el índice, pero no necesariamente utilizados en la consulta.
  • key: Consulta real del índice de usar. Si se trata null, entonces no se utiliza el índice, si se utiliza para cubrir el índice, el índice sólo aparece en keyla lista.
  • key_len: Muestra el número de bytes utilizados en el índice, la columna se pueden calcular mediante el uso de la consulta a la longitud de índice. Sin pérdida de precisión, una longitud lo más corta posible. key_lenEl valor de la longitud máxima se muestra en el campo de índice, no la longitud real, es decir, key_lense calcula sobre la definición de la tabla base, no se han recuperado por la tabla.
  • ref: Las columnas muestran los cuales se utilizan índices, si es posible, es una constante. Las columnas o constantes se utilizan para encontrar el valor del índice en la columna.
  • rowsSegún las estadísticas del número de filas y caso índice de selección de tabla, se encuentra una estimación aproximada del registro que deberá leer:
  • extra: No es adecuado para la exhibición en las otras columnas, pero la información importante
  1. using filesort: MySQL se describirá utilizando un índice de pedido de datos externo, en lugar de leer de acuerdo con el índice de la tabla. MySQL no puede usar índices para completar una operación de ordenación llamada 文件排序. Si esto sucede, la consulta será muy lento
  2. using temporary: Menciones tablas temporales para mantener los resultados intermedios, MySQL en los resultados de la consulta se clasifican usando una tabla temporal. Común en la clasificación order byy group by. Esto ocurre investigación será muy lento.
  3. using index: Indica que la operación de selección correspondiente usando un índice de cobertura (que abarca índice), impedir el acceso a las líneas de datos, una buena eficiencia! Si al mismo tiempo using where, muestra que el índice se utiliza para realizar la búsqueda por índice; si no se producen al mismo tiempo using where, lo que indica que el índice utilizado para leer para encontrar la acción no ejecutivo.
  4. using where: Uso wherepalabra clave de búsqueda
  5. impossible where: El valor total de la cláusula falso, no se puede utilizar para obtener cualquier tupla

Índice de optimización caso

  • mesa de indexación única, consulta campos no aparecen rango de índice de lo contrario la situación va a fallar
  • Dos mesas de consulta de combinación de indexación, el índice general, construida en el cuadro, la conexión a la izquierda, el establecimiento de la derecha, las conexiones adecuadas, basadas en la izquierda.

caso índice fallo (debe evitarse)

  • partido completo el valor de mis favoritos (consulta en plena conformidad con secuencial indizado)
  • Mejor regla izquierda-prefijo: Si un índice de varias columnas, el prefijo de la izquierda más para cumplir con la ley. Se refiere a una consulta desde el índice de la columna más a la izquierda del principio y no omitir la columna de índice (categoría trenes, locomotoras)
  • No hace nada (función de cálculo () de conversión de tipo automático o manual) en todas las columnas, el índice conducirá al fracaso, lo que resulta en un escaneo completo de tabla
  • motor de almacenamiento no puede utilizar el índice en la columna de la derecha de las condiciones de alcance
  • Trate de usar un índice de cobertura (un índice sólo las consultas de Access), la reducción de selección *
  • no es igual a la utilización de no se puede utilizar (<>! = O) cuando el índice resultante en un escaneo completo de tabla
  • Es nulo o no nulo no puede utilizar el índice
  • comienza con un comodín como ( '% ABCD'), MySQL recorrido de tabla de índice fallará se perfecciona
  • cuerda suelta sin comillas índice fallará
  • O menos, con sus conexiones pueden causar un fallo del índice

especificación de Alibaba

  • Recomendado]: SQL objetivo la optimización del rendimiento: para llegar al menos rangrequisito de nivel es refel nivel, si puede ser constsla mejor.
    explicación: constsMesa única sólo puede tener una fila coincidente (clave principal o índice único), los datos se pueden leer en la fase de optimización.
    refSe refiere a la utilización de un índice normal (índice normal)
    rangde la búsqueda de intervalo de índice
    contraejemplo: Los resultados explican la tabla, escriba = índice, el índice de los archivos físicos de análisis completo, la velocidad es muy lenta, el nivel del índice es también relativamente baja gama, y ​​un escaneo completo de tabla es trivial
Publicado 27 artículos originales · ganado elogios 28 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/justLym/article/details/105076001
Recomendado
Clasificación