在sql server表中存储标签的最佳方法?

时间:2008-09-28 04:03:06

标签: sql-server tags

为记录存储标签的最佳方法是什么?只需使用varchar字段?选择包含标记x的行时怎么办?使用like运算符?

谢谢!

4 个答案:

答案 0 :(得分:14)

取决于两件事:
1)标签/标签记录的数量
2)你是否对正常化有宗教观点:-)

除非处理大量数据,否则我建议使用'Tags'表将varchar值映射到整数标识符,然后将第二个表映射标记记录到它们的标记ID。我建议先实现它,然后检查它是否不符合您的性能需求。在这种情况下,保留一个带有标记行的id和标记的实际文本的表,但在此我建议你使用char列,因为如果优化器执行全表扫描,它将终止查询带有varchar列的大表。

答案 1 :(得分:6)

答案 2 :(得分:3)

不,将多个数据放在一个字段中通常是个坏主意。相反,使用单独的Tags表(可能只有TagID和TagName),然后,对于每个记录,指示与之关联的TagID。如果记录与多个标记相关联,则您将拥有重复记录,唯一的区别是TagID。

这里的优点是你可以通过标签,记录和分别维护Tags表来轻松查询(即如果标签名称发生变化会怎样?)。

答案 3 :(得分:3)

使用具有最小允许主键的标签表。如果少于255个标签使用一个字节(tinyint)或一个单词(smallint)。密钥越小,主表中外键的索引越小越快。