开发者社区 问答 正文

何时创建新的SQL Server索引?

显然(方法),在BIT列上创建索引是不必要的。但是,如果您有一个需要搜索的列,其中每个值都可能是唯一的(如BlogPost或之类的)StreetAddress,那么索引似乎是合适的(同样,方法)。

但是截止点是什么?如果期望10,000行,并且其中有大约20个唯一值,该怎么办。是否应该创建索引?

提前致谢。

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-18 17:43:59 429 分享 版权
1 条回答
写回答
取消 提交回答
  • 最好的答案是分析您的查询,并查看索引是否可以改善您的查询。回答这个问题的困难在于,几乎不可能概括查询优化器的行为。

    也就是说,经验法则是,如果您对表上的给定查询的选择性为10%或更低,那么您很可能会从索引中受益。因此,在您的示例中,如果您的值均匀分布,则可能会受益于索引。但是,考虑到表很小,因此性能提升可能微不足道。

    这不是一条硬性规定,因为有很多因素可以改变10%的数字,包括使用簇或其他索引类型,行的大小(如果某些列不是内联的话),查询结构等。

    还请记住,将具有索引的表插入到表中会大大降低性能。如果此表经常更新或附加,则较慢的插入和更新可能会抵消索引的速度提升。

    请参阅有关Tablescan与索引访问的MSDN文章。

    编辑:正如其他人指出的那样,如果您执行聚合查询(例如,计算特定值出现的次数),则查询可能会受益于索引。如果您经常在特定的列上进行排序,您也可能会受益。

    2019-11-18 17:44:09
    赞同 展开评论