Maison >base de données >tutoriel mysql >Dois-je stocker des listes dans une seule colonne SQL ou normaliser mes données pour des requêtes plus rapides ?

Dois-je stocker des listes dans une seule colonne SQL ou normaliser mes données pour des requêtes plus rapides ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-17 10:31:26377parcourir

Should I Store Lists in a Single SQL Column or Normalize My Data for Faster Queries?

Gestion des entrées de « liste » dans les tables SQL : requêtes et données normalisées

Lorsque vous travaillez avec des tables SQL, il est courant de stocker des données dans soit une seule ligne avec une entrée « liste » ou une ligne distincte pour chaque entrée. Cette question examine quelle approche est la plus efficace en termes de temps de requête pour un cas d'utilisation spécifique.

Approche actuelle avec entrée « Liste »

L'interrogateur a un SQLite existant table avec des lignes ressemblant à :

value, "a,b,c,d,e,f,g,h,i,j", value3, value4

où les requêtes recherchent des paires de "valeur" et "%b%" à l'aide de LIKE opérateur.

Approche proposée avec des données normalisées

Pour améliorer l'efficacité des requêtes, l'affiche propose de créer une nouvelle table où chaque ligne représente une permutation :

value, a, value3, value4
...
value, j, value3, value4

Les requêtes utiliseraient alors l'opérateur "=" pour rechercher "valeur" et "b."

Avantages de la normalisation

La réponse à cette question recommande fortement d'utiliser une structure de table normalisée. En effet, les requêtes LIKE '%something%' ne peuvent pas utiliser les index, ce qui ralentit les temps de recherche. De plus, l'utilisation d'une colonne « liste » dans un SGBDR va à l'encontre des meilleures pratiques.

Les avantages de la normalisation incluent :

  • requêtes plus rapides à l'aide d'index
  • suppression de l'anti-motif de la colonne "CSV"
  • amélioration de l'intégrité des données et flexibilité

En normalisant les données, vous pouvez améliorer encore les performances en supprimant les entrées en double et en créant des relations entre les tables, permettant des requêtes plus complexes et efficaces.

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