【问题标题】:SQL indexes on a join table连接表上的 SQL 索引
【发布时间】:2013-12-01 09:32:43
【问题描述】:

假设我有 3 个表:tbl_poststbl_tags,还有一个用于多对多关系的连接表:tbl_posts_tags,只有 2 列:post_idtag_id

使用主键(post_id,tag_id)和(唯一?)索引(tag_id,post_id)有意义吗?

【问题讨论】:

  • 你的意思是主键吗?是的,这是有道理的!
  • 拥有主键是有意义的。我认为为主键中已经存在的列创建相同的索引没有任何意义。
  • 我知道列在索引上的顺序,但在这个特定的情况下,我想知道有什么优点和缺点。
  • 取决于标签分布。如果您有很多标签,并且每个标签通常只附加很少的帖子,并且您经常需要按标签查询,那么是的,按 (tad_id, post_id) 添加索引是有意义的。如果标签是通用的,并且说三分之一或一半的帖子附加了相同的标签,那么可能不是。
  • 索引列的顺序确实很重要,所以也许值得你做一些测试看看哪种顺序更好。如果您同时添加两者(使用 sys.dm_db_index_usage_stats),我希望只有具有最大选择性的索引才会被使用

标签: sql indexing jointable


【解决方案1】:

如果你的意思是你应该让你的主键成为聚集索引,那么是的。不过,在那之后添加一个额外的索引是没有意义的。

【讨论】:

    猜你喜欢
    • 2013-03-29
    • 2017-05-02
    • 1970-01-01
    • 2016-03-10
    • 2012-06-03
    • 2017-01-08
    • 2012-10-03
    • 2017-11-03
    • 2014-09-11
    相关资源
    最近更新 更多