Maison >base de données >tutoriel mysql >Comment une table temporaire peut-elle améliorer l'efficacité lors de l'utilisation de plusieurs conditions LIKE dans SQL ?

Comment une table temporaire peut-elle améliorer l'efficacité lors de l'utilisation de plusieurs conditions LIKE dans SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-08 14:12:40976parcourir

How Can a Temporary Table Improve Efficiency When Using Multiple LIKE Conditions in SQL?

Utilisez des tables temporaires pour gérer plusieurs conditions dans l'opérateur LIKE

En SQL, l'opérateur LIKE est utilisé pour effectuer une correspondance de modèle sur les valeurs de chaîne. Bien qu'il soit possible de combiner plusieurs conditions LIKE à l'aide de l'opérateur OR, une meilleure solution consiste à utiliser une table temporaire.

Considérez la déclaration suivante :

<code class="language-sql">select * from tbl where col like ('ABC%','XYZ%','PQR%');</code>

Cette instruction est conçue pour récupérer toutes les lignes de la table tbl où la colonne col correspond à n'importe quel modèle ABC%, XYZ% ou PQR%. Bien que l’utilisation de la salle d’opération soit une approche efficace, pour un grand nombre de conditions, elle peut devenir fastidieuse et inefficace.

Au lieu de cela, nous pouvons créer une table temporaire appelée modèles pour stocker tous les modèles que nous voulons faire correspondre :

<code class="language-sql">CREATE TEMPORARY TABLE patterns (
  pattern VARCHAR(20)
);

INSERT INTO patterns VALUES ('ABC%'), ('XYZ%'), ('PQR%');</code>

Après avoir créé la table temporaire, nous pouvons la joindre à la table tbl en utilisant l'opérateur LIKE :

<code class="language-sql">SELECT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>

Dans cette requête, la colonne pattern de la table patterns est utilisée pour correspondre à la colonne col de la table tbl. Le résultat est une liste de lignes dans tbl qui correspondent à n'importe quel modèle de la table des modèles.

Il est important de noter que si une ligne du tbl correspond à plusieurs modèles, elle apparaîtra plusieurs fois dans les résultats. Si cela n'est pas souhaité, vous pouvez utiliser le modificateur de requête DISTINCT :

<code class="language-sql">SELECT DISTINCT t.* FROM tbl t JOIN patterns p ON (t.col LIKE p.pattern);</code>

Cela garantira que chaque ligne du tbl n'apparaîtra qu'une seule fois dans les résultats, même si elle correspond à plusieurs modèles.

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!

Déclaration:
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