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
Libérer: 2025-01-08 14:12:40
original
971 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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