Diez años de JAVA moviendo ladrillos: conocimiento básico de la optimización de MYSQL

1. Posibilidad de falla del índice MYSQL

1. La consulta no usa la columna de índice : si la consulta no usa la columna de índice, MySQL no podrá usar el índice para la búsqueda rápida, lo que provocará una falla en el índice.

2. Las funciones se usan en la columna de índice : si se usan funciones (como INFERIOR, SUPERIOR, etc.) en la columna de índice, MySQL no puede usar el índice para una búsqueda rápida, lo que hace que el índice deje de ser válido.

**3. El tipo de datos de la columna de índice no coincide: **Si el tipo de datos en la condición de consulta no coincide con el tipo de datos de la columna de índice, es posible que MySQL no pueda usar el índice para buscar, lo que provoca que índice para fallar.

** 4. La cantidad de datos es demasiado pequeña: ** Para índices no únicos, si la cantidad de datos es demasiado pequeña, MySQL puede optar por escanear toda la tabla en lugar de usar el índice, lo que hace que el índice falle.

(1) 表的大小:如果表中的数据量非常小,比如只有几行或几十行,MySQL可能会选择全表扫描而不是使用索引。这是因为对于非常小的表来说,使用索引进行查找可能会导致额外的开销,而全表扫描可能更快。 
 
(2) 索引的选择性:索引的选择性是指索引中不同值的数量与表中总行数的比率。如果索引的选择性非常低,即索引列上的值重复较多,MySQL可能会认为使用索引进行查找并不高效,而选择全表扫描。 
 
(3) 查询优化器的判断:MySQL的查询优化器会根据统计信息和查询复杂度等因素来决定是使用索引还是全表扫描。如果查询优化器认为全表扫描更高效,即使数据量较小,也可能选择全表扫描。 

5. Hay valores NULL en la columna de índice : para índices ordinarios, si hay una gran cantidad de valores NULL en la columna de índice, MySQL puede renunciar a usar el índice y elegir un escaneo de tabla completo.

**6. El orden de las columnas del índice no coincide: ** Para el índice conjunto, si el orden de las columnas de la condición de consulta no coincide con el orden de las columnas de la definición del índice, es posible que MySQL no pueda usar el índice para búsqueda, lo que resulta en un error de índice.

Utilice la explicación para ver el uso del índice de SQL

El significado de la columna Tipo
**1. sistema:** Este es el tipo de consulta de más alto nivel, lo que indica que solo hay una fila de datos (como una tabla del sistema).

**2. const:** este es el mejor tipo de consulta, lo que significa que MySQL puede usar constantes para hacer coincidir una sola fila durante el proceso de consulta. Por ejemplo, MySQL puede usar el tipo de consulta const cuando usa una clave principal o un índice único para consultas equivalentes.

**3.eq_ref:** Este es un tipo de consulta muy bueno, lo que indica que MySQL usa un índice de unión para hacer coincidir una sola fila durante el proceso de consulta. Por ejemplo, MySQL puede usar el tipo de consulta eq_ref cuando usa una clave principal o un índice único para consultas equivalentes en una consulta de combinación.

**4.ref:** Este es un mejor tipo de consulta, lo que indica que MySQL usa un índice no único para encontrar filas coincidentes durante el proceso de consulta. Por ejemplo, MySQL puede usar el tipo de consulta ref cuando se usa un índice no único en la consulta para una consulta equivalente o una consulta IN.

**5. rango:** este es un mejor tipo de consulta, lo que indica que MySQL usa el rango de índice para encontrar filas coincidentes durante el proceso de consulta. Por ejemplo, MySQL puede usar el tipo de consulta de rango cuando se usa un índice no único en la consulta para una consulta de rango.

**6.índice:** este es un tipo de consulta general, lo que indica que MySQL usa un índice para encontrar filas coincidentes durante el proceso de consulta. Por ejemplo, MySQL puede usar el tipo de consulta de índice cuando se usa un índice no único en la consulta para una consulta LIKE.

**7. todos:** Este es el peor tipo de consulta, lo que significa que MySQL necesita escanear toda la tabla para encontrar filas coincidentes durante el proceso de consulta. Por ejemplo, MySQL puede usar el tipo de consulta todo cuando no se usa un índice o se usa un índice inapropiado en la consulta.

Valor y significado de columna adicional

1. Usar índice: indica que la consulta está usando el índice para recuperar datos, generalmente una buena señal. Esto significa que las consultas pueden acceder rápidamente a las filas requeridas a través de la estructura del índice.

2. Usando where: indica que la consulta está usando la cláusula WHERE para filtrar las condiciones. Si bien esto es necesario para el filtrado de resultados, este indicador por sí solo no dice mucho sobre el rendimiento.

3. Usando temporal: Indica que MySQL necesita crear una tabla temporal para procesar consultas. Esto puede suceder cuando están presentes cláusulas complejas GROUP BY, DISTINCT u ORDER BY. Si bien puede afectar el rendimiento, por lo general no es un problema importante.

4. Usar ordenación de archivos: indica que la consulta necesita realizar operaciones de ordenación adicionales para satisfacer la cláusula ORDER BY. Esto puede suceder cuando un índice no puede satisfacer la cláusula ORDER BY de una consulta. La clasificación de archivos puede consumir muchos recursos, especialmente para grandes conjuntos de resultados, lo que afecta el rendimiento.

5. Usando el búfer de unión: indica que MySQL está usando el búfer de conexión para realizar operaciones de unión entre tablas. Por lo general, es eficiente, pero si el tamaño del búfer de conexión es demasiado pequeño, puede causar operaciones basadas en disco, lo que afecta el rendimiento.

6. Uso de la condición de índice : indica que MySQL está utilizando la inserción de índice, que utiliza el índice para evaluar parte de la cláusula WHERE. Puede mejorar el rendimiento al reducir el número de filas que deben examinarse.

7. Imposible donde: Indica que la cláusula WHERE de la consulta contiene condiciones contradictorias, imposibilitando la satisfacción de la consulta. Esto puede dar como resultado un conjunto de resultados vacío.

índice de clasificación

1. Índice agrupado:

  • Un índice agrupado determina el orden físico de las filas en una tabla.
  • Solo se puede crear un índice agrupado por tabla.
  • El motor de almacenamiento InnoDB en MySQL utiliza índices agrupados en claves principales de forma predeterminada.
  • Cuando una tabla tiene un índice agrupado, las filas de datos reales se almacenan en los nodos hoja del propio índice.
  • Los nodos de hoja de un índice agrupado contienen la fila completa de datos, por lo que la clave principal puede recuperar de manera eficiente la fila completa.
  • El orden del índice agrupado afecta el orden físico de los datos en el disco.

2. Índice no agrupado:

  • Los índices no agrupados son estructuras que están separadas de los datos reales.
  • Se pueden crear múltiples índices no agrupados por tabla.
  • Un índice no agrupado contiene una copia de las columnas indexadas, así como punteros a los datos reales.
  • Los nodos de hoja de un índice no agrupado contienen solo las columnas indexadas y los punteros a las filas de datos correspondientes.
  • Los índices no agrupados son útiles para buscar y ordenar eficientemente en columnas específicas, pero pueden requerir búsquedas adicionales para recuperar filas completas de datos.

Supongo que te gusta

Origin blog.csdn.net/weixin_43485737/article/details/132280449
Recomendado
Clasificación