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

谢谢!

有帮助吗?

解决方案

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

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top