"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué mi consulta MySQL es tan lenta?

¿Por qué mi consulta MySQL es tan lenta?

Publicado el 2025-03-24
Navegar:869

Why is my MySQL query with ORDER BY so slow?

desaceleración de consultas con orden por cláusula

mysql Los usuarios de la base de datos han encontrado un problema de rendimiento desconcertante relacionado con el uso del orden por cláusula. Cuando se agrega a una consulta compleja con múltiples uniones y subconsules, el tiempo de ejecución de la consulta aumenta significativamente de milisegundos a segundos.

una instancia específica implica una consulta que recupera datos de tres tablas con aproximadamente 40,000 filas en la tabla más grande. Sin la orden por cláusula, la consulta funciona de manera óptima. Sin embargo, cuando cualquier columna se usa como criterio de clasificación, la consulta disminuye por varios órdenes de magnitud a alrededor de 10 segundos.

La causa raíz de este problema radica en el mecanismo de optimización de la base de datos. Por defecto, MySQL intenta optimizar las consultas creando tablas temporales o usando subconsules. Cuando se agrega una cláusula de orden por cláusula, el optimizador calcula mal clavos el tamaño de la tabla temporal necesaria y asigna una cantidad insuficiente de memoria. En consecuencia, la consulta vuelve a un algoritmo de clasificación menos eficiente, que resulta en la desaceleración observada.

Una posible solución es reescribir la consulta usando una subconsulta correlacionada o un CTE (expresión de tabla común) para especificar explícitamente el paso de clasificación. Esto permite que el optimizador estime correctamente el tamaño temporal de la tabla, evitando la desaceleración.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3