Performances SQL : comparaison UNION vs OR
Un article récent sur l'optimisation des instructions SQL a soulevé des problèmes de performances concernant l'utilisation de OR et UNION. Bien que l'auteur recommande de remplacer OR par UNION pour améliorer les performances, un examen plus approfondi révèle que toutes les instructions OR ne nécessitent pas cette conversion.
Utilisez OU
L'opérateur OR combine les conditions de sorte que si l'une ou l'autre des conditions est vraie, le résultat est vrai. En SQL, OR peut être appliqué aux colonnes et aux lignes.
Par exemple, la requête suivante récupère les lignes où la société est « bbc » ou « itv » :
<code class="language-sql">select username from users where company = 'bbc' or company = 'itv';</code>
Cette requête équivaut à :
<code class="language-sql">select username from users where company IN ('bbc', 'itv');</code>
MySQL peut exploiter efficacement l'index de la colonne company pour effectuer cette requête sans utiliser UNION.
Utiliser UNION
UNION combine les résultats de plusieurs requêtes. Lorsqu'elle est appliquée aux lignes, UNION récupère les lignes qui répondent à un ou plusieurs critères spécifiés, mais exclut les lignes en double.
Dans la requête suivante :
<code class="language-sql">select username from users where company = 'bbc' union select username from users where city = 'London';</code>
UNION permet à chaque sous-requête d'utiliser son propre index pour optimiser la recherche. UNION combine ensuite les résultats des deux sous-requêtes.
Quand utiliser OR ou UNION
OR est plus adapté lorsque les conditions suivantes sont remplies :
UNION est plus efficace lorsque les conditions suivantes sont remplies :
TRI ET UNION
UNION entraîne une surcharge de tri pour éliminer les lignes en double. Cependant, cette surcharge affecte généralement une petite proportion des résultats. Le coût du tri est généralement inférieur à l'optimisation obtenue en utilisant un index de sous-requête.
Par conséquent, déterminer la méthode la plus appropriée (OU ou UNION) nécessite un examen attentif des données spécifiques et des critères de recherche. L'analyse comparative des deux approches à l'aide de MySQL Query Analyzer peut fournir des informations concluantes sur les performances.
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!