哪种表结构在性能方面更有效

创建新帖子时,我希望用户选择一个或多个标签(最多 5 个)链接到该帖子。我有帖子、标签和 tagPosts 表。

性能方面,在 tagposts (TagId1 到 TagId5) 中创建 5 个字段是否更好,其中每个 post_id 在此表中都有一行与 5 个标签链接(当然,这些标签将通过 5 个“tagposts.tagid 链接到标签表” = 标签.id”)。或者最好为每个 post_id Tag_id 映射创建一个新行?


qq_花开花谢_0
浏览 143回答 1
1回答

哈士奇WWW

首先,您无法真正衡量表格的“效率”。您可以衡量查询的性能。其次,即使从空间的角度来看,将值存储在一行中也可能不是一种胜利。存储被值占用,即使它们是NULL. 在适当的连接/关联表中,不会有行。因此,如果您平均每个帖子有一个或两个标签,那么关联表可能会使用更少的空间。第三,在单独的列中管理标签很痛苦。要搜索一个标签值,您必须执行以下操作:where @tag in (tag1, tag2, tag3, tag4, tag5)你猜怎么着?那不会使用任何索引。然后,如果您想确保所有标签都是唯一的?您可以使用唯一约束吗?呃,没有。尝试使用以下逻辑的触发器:(tag1 <> tag2 or tag1 is null or tag2 is null) and(tag1 <> tag3 or tag1 is null or tag3 is null) and. . .-- there are lots of combinations so give yourself some time这些是关联表通常是最佳方法的几个原因。在某些情况下,使用不同的列是一个很好的解决方案,但默认值应该是正确的连接/关联表。
打开App,查看更多内容
随时随地看视频慕课网APP