为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
qq_花开花谢_0 2021-11-13 19:10:38
创建新帖子时,我希望用户选择一个或多个标签(最多 5 个)链接到该帖子。我有帖子、标签和 tagPosts 表。性能方面,在 tagposts (TagId1 到 TagId5) 中创建 5 个字段是否更好,其中每个 post_id 在此表中都有一行与 5 个标签链接(当然,这些标签将通过 5 个“tagposts.tagid 链接到标签表” = 标签.id”)。或者最好为每个 post_id Tag_id 映射创建一个新行?
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

首先,您无法真正衡量表格的“效率”。您可以衡量查询的性能。


其次,即使从空间的角度来看,将值存储在一行中也可能不是一种胜利。存储被值占用,即使它们是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

这些是关联表通常是最佳方法的几个原因。在某些情况下,使用不同的列是一个很好的解决方案,但默认值应该是正确的连接/关联表。


查看完整回答
反对 回复 2021-11-13
  • 1 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信