Consultas "IN" lentas con subconsultas en MySQL
Las consultas MySQL que utilizan el operador "IN" pueden presentar una degradación significativa del rendimiento cuando se utiliza la subconsulta recuperar los valores de la cláusula "IN" es complejo. En tales casos, sustituir los resultados de la subconsulta con valores explícitos genera mejoras significativas en el tiempo de ejecución.
Para comprender la causa de este comportamiento, es importante tener en cuenta que MySQL ejecuta subconsultas cada vez que se evalúa la consulta "IN". . En el ejemplo proporcionado, hay 7 millones de filas en la tabla em_link_data, cada una de las cuales se procesa por separado, lo que genera numerosas evaluaciones de subconsultas.
Reemplazar la subconsulta con valores explícitos, por otro lado, elimina la necesidad de ejecuciones repetidas de subconsultas, lo que resulta en un aumento sustancial del rendimiento. Se puede lograr una ventaja de rendimiento similar utilizando una subconsulta JOIN en lugar de una subconsulta "IN", optimizando aún más el proceso de ejecución.
Desafortunadamente, el usuario no puede modificar la consulta debido a limitaciones del software. En tales casos, vale la pena investigar métodos alternativos para mejorar el rendimiento, como optimizar las tablas involucradas mediante la creación de índices apropiados o explorar formas de reducir la cantidad de filas procesadas por la consulta.
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