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
Libérer: 2024-12-17 10:31:26
original
374 Les gens l'ont consulté

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

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

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!

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