"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi les requêtes \"IN\" avec sous-requêtes dans MySQL sont-elles lentes et comment puis-je améliorer les performances ?

Pourquoi les requêtes \"IN\" avec sous-requêtes dans MySQL sont-elles lentes et comment puis-je améliorer les performances ?

Publié le 2024-11-09
Parcourir:833

Why are \

Requêtes "IN" lentes avec des sous-requêtes dans MySQL

Les requêtes MySQL utilisant l'opérateur "IN" peuvent présenter une dégradation significative des performances lorsque la sous-requête est utilisée récupérer les valeurs de la clause "IN" est complexe. Dans de tels cas, le remplacement des résultats de la sous-requête par des valeurs explicites entraîne des améliorations significatives du temps d'exécution.

Pour comprendre la cause de ce comportement, il est important de noter que MySQL exécute des sous-requêtes à chaque fois que la requête "IN" est évaluée. . Dans l'exemple fourni, il y a 7 millions de lignes dans la table em_link_data, chacune étant traitée séparément, ce qui entraîne de nombreuses évaluations de sous-requête.

En revanche, le remplacement de la sous-requête par des valeurs explicites élimine le besoin de exécutions répétées de sous-requêtes, ce qui entraîne une amélioration substantielle des performances. Un avantage de performances similaire peut être obtenu en utilisant une sous-requête JOIN au lieu d'une sous-requête "IN", optimisant ainsi davantage le processus d'exécution.

Malheureusement, l'utilisateur ne peut pas modifier la requête en raison de limitations logicielles. Dans de tels cas, il vaut la peine d'étudier des méthodes alternatives pour améliorer les performances, telles que l'optimisation des tables impliquées en créant des index appropriés ou en explorant des moyens de réduire le nombre de lignes traitées par la requête.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3