Maison > base de données > tutoriel mysql > le corps du texte

Comment optimiser les requêtes pour les colonnes séparées par des virgules dans les bases de données ?

Patricia Arquette
Libérer: 2024-10-30 15:03:03
original
158 Les gens l'ont consulté

How to Optimize Queries for Comma-Separated Columns in Databases?

Optimisation des requêtes pour les colonnes séparées par des virgules

Les tables de base de données contiennent souvent des colonnes avec des listes de valeurs séparées par des virgules, ce qui crée des problèmes lors des requêtes spécifiques valeurs. Considérons un tableau avec une colonne "CATÉGORIES" au format suivant :

ID | CATEGORIES
---------------
1  | c1
2  | c2,c3
3  | c3,c2
4  | c3
5  | c4,c8,c5,c100
Copier après la connexion

Pour rechercher des catégories spécifiques, vous pouvez dans un premier temps opter pour des instructions LIKE :

SELECT id FROM table WHERE categories LIKE '%c2%'; -- Returns rows 2 and 3
Copier après la connexion

Cependant, les instructions LIKE peut être inefficace pour les colonnes séparées par des virgules. La fonction FIND_IN_SET() d'Oracle peut sembler une alternative appropriée, mais elle n'est pas disponible dans Oracle 10g.

Une approche plus optimale consiste à utiliser LIKE avec les caractères génériques appropriés :

SELECT 
  * 
FROM
  YourTable 
WHERE 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'
Copier après la connexion

Cette requête ajoute des virgules autour de la valeur de recherche pour garantir des correspondances exactes. Cependant, cela peut encore être lent en raison de l'utilisation de LIKE.

Une solution supérieure consiste à restructurer les données en tables séparées avec des liaisons croisées pour éviter les limitations des colonnes séparées par des virgules, améliorant ainsi considérablement les performances 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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!