Maison > base de données > tutoriel mysql > Pourquoi ma condition SQL IN est-elle plus lente que '=' lors de la comparaison d'une valeur unique ?

Pourquoi ma condition SQL IN est-elle plus lente que '=' lors de la comparaison d'une valeur unique ?

Barbara Streisand
Libérer: 2025-01-16 17:01:10
original
518 Les gens l'ont consulté

Why is My SQL IN Condition Slower Than

SQL IN vs = : écarts de performances

Aperçu :

L'opérateur SQL IN vérifie si une valeur existe dans une liste spécifiée. Cependant, les performances peuvent souffrir considérablement lors de l'utilisation de IN par rapport à l'opérateur =, en particulier dans certains scénarios.

Le problème :

Une requête SQL spécifique a démontré une différence de performances substantielle entre l'utilisation de IN et =, même lorsque IN ne comparait qu'une seule valeur.

Cause fondamentale :

Le goulot d'étranglement des performances provient d'une faille d'optimisation MySQL. MySQL classe à tort une sous-requête dans une clause IN comme une sous-requête dépendante, au lieu d'une sous-requête indépendante.

Sous-requêtes dépendantes ou indépendantes :

Cette erreur de classification est critique. Les sous-requêtes dépendantes s'exécutent de manière répétée pour chaque ligne de la requête externe, ce qui a un impact considérable sur les performances. En revanche, les sous-requêtes indépendantes ne s'exécutent qu'une seule fois et leurs résultats sont mis en cache pour plus d'efficacité.

Analyse simplifiée :

Une version simplifiée de la requête d'origine reproduisait le problème de performances, confirmant que la sous-requête de la clause IN était traitée comme dépendante, ce qui entraînait une exécution plus lente.

Résolution :

L'identification erronée par MySQL du type de sous-requête comme dépendant est à l'origine de la dégradation des performances lors de l'utilisation de IN. Ce problème est résolu dans MySQL 5.6.x et versions ultérieures.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal