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 ?
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 :
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!