J'ai une colonne varchar (70) dans l'une de ma table où je stocke des tags séparés par des espaces:SQL colonne Recherche Question (SQL Server 2005)
Id Tags
1 Baby Kids Learning Alphabets
2 Kids Baby
3 Comedy Movie Fun
100 Kids Learning Alphabets
500 Kids Baby
J'effectuer une recherche sur la colonne: Obtenez tous ids où nous avons Bébé Enfants et Alphabets dans les balises
Je peux faire où Tags comme '% Baby%' ou des tags comme '% Kids%' ou des tags comme '% Alphabets%' Sélectionner une requête quand il y a # grand des rangées. Mais ajouter \ delete \ edit est toujours très rapide.
J'ai donc ajouté une autre table appelée Balises où je stocke les balises par ordre alphabétique comme:
Tag Id
Alphabets 1
Alphabets 100
Baby 1
Baby 2
Baby 500
Comedy 3
Kids 1
Cela rend la recherche plus rapide, vous pouvez acheter la mise à jour \ supprimer \ insert douloureux.
Mon design est-il bon pour la croissance future?
Comment devriez-vous concevoir cette colonne de tags?
Merci pour la lecture
EDIT: * Tout ce que je suis en train de tirer la liste des ids connexes. Fondamentalement, trouver tous les identifiants ayant les balises ou balises données. Comme sur cette question, vous voyez "Questions connexes" sur la droite. C'est ce que j'essaie d'obtenir. *
J'ai des réponses pour tout qs. Il y aura des millions de tags. Considérez simplement qu'il s'agit d'un site de partage public. S'il y a 10 millions de lignes et que chacune a 5 balises, alors ce sont des balises de 50M. Donc, des tonnes de tags seront là. Je dois choisir me donner tous les ids où nous avons Alphabets et apprentissage – kheya
Il semble qu'il est probable que les tags seront votre goulot d'étranglement alors ils devraient être rapides. Votre dernière approche me semble meilleure pour cette raison. Vous pouvez également envisager de conserver un nombre mis en cache dans la table des étiquettes au cas où vous auriez besoin de répondre à la question "Combien de fois cette étiquette est-elle utilisée?" Ce sera bien sûr une autre chose à faire lors de l'insertion/la mise à jour/la suppression, mais cela peut être payant à long terme si vous prévoyez d'afficher un nuage de tags sur chaque page vue. – skaz