"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que as consultas "IN" com subconsultas no MySQL são lentas e como posso melhorar o desempenho?

Por que as consultas "IN" com subconsultas no MySQL são lentas e como posso melhorar o desempenho?

Publicado em 2024-11-09
Navegar:886

Why are \

Consultas "IN" lentas com subconsultas no MySQL

Consultas MySQL usando o operador "IN" podem apresentar degradação significativa de desempenho quando a subconsulta usada recuperar os valores da cláusula "IN" é complexo. Nesses casos, substituir os resultados da subconsulta por valores explícitos resulta em melhorias significativas no tempo de execução.

Para entender a causa desse comportamento, é importante observar que o MySQL executa subconsultas toda vez que a consulta "IN" é avaliada . No exemplo fornecido, há 7 milhões de linhas na tabela em_link_data, cada uma delas processada separadamente, resultando em inúmeras avaliações de subconsulta.

Substituir a subconsulta por valores explícitos, por outro lado, elimina a necessidade de execuções repetidas de subconsultas, resultando em um aumento substancial de desempenho. Uma vantagem de desempenho semelhante pode ser alcançada usando uma subconsulta JOIN em vez de uma subconsulta "IN", otimizando ainda mais o processo de execução.

Infelizmente, o usuário não pode modificar a consulta devido a limitações de software. Nesses casos, vale a pena investigar métodos alternativos para melhorar o desempenho, como otimizar as tabelas envolvidas criando índices apropriados ou explorar formas de reduzir o número de linhas processadas pela consulta.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3