Maison >base de données >tutoriel mysql >Performances SQL : quand dois-je utiliser UNION au lieu de OR ?
Dans l'optimisation des bases de données, il est généralement recommandé de remplacer l'instruction OR par une instruction UNION. Cependant, l’impact potentiel de cette approche sur les performances est un sujet de préoccupation.
Cet article recommande d'utiliser UNION pour remplacer l'instruction OR lors de l'interrogation des tables. Par exemple :
<code class="language-sql">select username from users where company = 'bbc' or company = 'itv';</code>
peut être réécrit comme :
<code class="language-sql">select username from users where company = 'bbc' union select username from users where company = 'itv';</code>
À en juger par la sortie EXPLAIN, UNION semble doubler le travail. Toutefois, ce n’est pas le cas dans tous les cas.
Pour des conditions OU simples impliquant une seule colonne, MySQL peut utiliser efficacement les index pour récupérer des données. Dans ce cas, UNION n’apporte pas d’avantages significatifs en termes de performances.
L'avantage de UNION est lorsque la condition OR implique différentes colonnes. Considérez la requête suivante :
<code class="language-sql">select username from users where company = 'bbc' or city = 'London';</code>
Dans ce cas, MySQL ne peut pas utiliser deux index (un pour l'entreprise et un pour la ville) en même temps. UNION fournit un moyen de diviser la recherche en deux sous-requêtes, chacune pouvant tirer parti de l'index correspondant.
Bien que UNION puisse optimiser efficacement des conditions complexes en salle d'opération, il ne double pas toujours définitivement la charge de travail. La meilleure approche dépend de la requête spécifique et de la distribution des données dans la table. Il est recommandé d'évaluer les instructions OR et UNION dans MySQL Query Analyzer pour déterminer la meilleure solution.
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!