【发布时间】:2013-12-01 09:32:43
【问题描述】:
假设我有 3 个表:tbl_posts 和 tbl_tags,还有一个用于多对多关系的连接表:tbl_posts_tags,只有 2 列:post_id 和 tag_id。
使用主键(post_id,tag_id)和(唯一?)索引(tag_id,post_id)有意义吗?
【问题讨论】:
-
你的意思是主键吗?是的,这是有道理的!
-
拥有主键是有意义的。我认为为主键中已经存在的列创建相同的索引没有任何意义。
-
我知道列在索引上的顺序,但在这个特定的情况下,我想知道有什么优点和缺点。
-
取决于标签分布。如果您有很多标签,并且每个标签通常只附加很少的帖子,并且您经常需要按标签查询,那么是的,按 (tad_id, post_id) 添加索引是有意义的。如果标签是通用的,并且说三分之一或一半的帖子附加了相同的标签,那么可能不是。
-
索引列的顺序确实很重要,所以也许值得你做一些测试看看哪种顺序更好。如果您同时添加两者(使用 sys.dm_db_index_usage_stats),我希望只有具有最大选择性的索引才会被使用