显然(方法),在BIT列上创建索引是不必要的。但是,如果您有一个需要搜索的列,其中每个值都可能是唯一的(如BlogPost或之类的)StreetAddress,那么索引似乎是合适的(同样,方法)。
但是截止点是什么?如果期望10,000行,并且其中有大约20个唯一值,该怎么办。是否应该创建索引?
提前致谢。
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
最好的答案是分析您的查询,并查看索引是否可以改善您的查询。回答这个问题的困难在于,几乎不可能概括查询优化器的行为。
也就是说,经验法则是,如果您对表上的给定查询的选择性为10%或更低,那么您很可能会从索引中受益。因此,在您的示例中,如果您的值均匀分布,则可能会受益于索引。但是,考虑到表很小,因此性能提升可能微不足道。
这不是一条硬性规定,因为有很多因素可以改变10%的数字,包括使用簇或其他索引类型,行的大小(如果某些列不是内联的话),查询结构等。
还请记住,将具有索引的表插入到表中会大大降低性能。如果此表经常更新或附加,则较慢的插入和更新可能会抵消索引的速度提升。
请参阅有关Tablescan与索引访问的MSDN文章。
编辑:正如其他人指出的那样,如果您执行聚合查询(例如,计算特定值出现的次数),则查询可能会受益于索引。如果您经常在特定的列上进行排序,您也可能会受益。