Au-delà de la OU : une approche plus efficace face à plusieurs conditions LIKE
Les recherches dans les bases de données nécessitent souvent des critères complexes, impliquant fréquemment plusieurs conditions LIKE. Bien que l'utilisation de OR
soit simple, elle peut s'avérer inefficace et moins flexible pour une correspondance de modèles étendue. Cet article présente une méthode supérieure utilisant des tables temporaires.
L'efficacité des tables temporaires
Pour gérer efficacement plusieurs modèles LIKE, créez une table temporaire pour stocker ces modèles. Ce tableau, par exemple, pourrait être nommé patterns
avec une seule colonne, pattern
, contenant le type de données approprié (par exemple, VARCHAR
). Si vos modèles sont « ABC% », « XYZ% » et « PQR% », la création et le remplissage de la table ressembleraient à ceci :
<code class="language-sql">CREATE TEMPORARY TABLE patterns ( pattern VARCHAR(20) ); INSERT INTO patterns VALUES ('ABC%'), ('XYZ%'), ('PQR%');</code>
Rejoindre pour l'optimisation de la correspondance de modèles
Une fois la table temporaire remplie, une opération JOIN
filtre efficacement votre table principale (tbl
) en fonction des modèles. Toute ligne de tbl
correspondant à n'importe quel motif de patterns
sera incluse dans les résultats. La requête serait :
<code class="language-sql">SELECT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>
Gestion des résultats en double avec DISTINCT
Si une colonne peut correspondre à plusieurs modèles, entraînant des lignes en double, utilisez le mot-clé DISTINCT
pour renvoyer uniquement des résultats uniques :
<code class="language-sql">SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>
Résumé : Une approche supérieure
L'utilisation de tables temporaires pour gérer plusieurs conditions LIKE offre une solution plus propre, plus efficace et adaptable. Cette séparation des modèles simplifie la gestion et l'expansion des critères de recherche. Le résultat est une amélioration des performances, de la lisibilité et de la maintenabilité des requêtes.
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!