理解索引的选择性和密度

来源:互联网 发布:美工培训上海 编辑:程序博客网 时间:2024/04/28 16:50

选择性可以通过公式度量:(从查询中返回的行/表中所有的行).表中仅有一行可以满足查询的独特索引具有100%的选择性,并且这种索引总会被使用.如果返回行的百分比较抵,这个索引就有高度的选择性,它容易被查询优化器选择.如果百分比高在表中许多行都会被获取,则选择性抵,索引的用处不大.正如以上提到的,索引选择性至少需要90%如果表需要返回超过10%的行,则索引的选择性就太低了,这个索引就会被忽略.事实少年宫,经常的情况是,如果查询要获取的行超过5%,查询优化器就会选择不同的索引或者执行表扫描.事实上,在查询优化器选择一个索引之前,它希望可以90%-95%的行.一个比较好的消息就是你可以很容易地度量选择性.如果选择性超过95%,则这个索引就很有可能被选择以满足查询.

密度

密度定义了行中重复值的百分比.密度的范围从0-1.低密度值更受欢迎,高选择性的索引有低的密度值,通常范围从0.05-0.10.如果换算成选择性95%-90%.如果索引上的密度值超过了0.10,它就可能不被使用.当使用非群集索引的时候,数据怎样访问.数据页会按照索引的次序获取,除了在页需要被再次访问的很少情况下,请求不会是顺序的.

在建立有用的索引的时候,列的唯一性是一个重要的变量.唯一性高对于非群集索引来讲是一个很好的选择.与此相对的,唯一性低对于群集索引来讲是一个很好的备选,唯一性非常小(小于3)的列根本不能被索引.

        选择性可以通过分析索引的分布统计得到.通过使用DBCC SHOWCONTIC 或者DBCC SHOW_STATISTICS 可以检查索引列上的数据分布.它们可以为索引的选择性和密度提供一个很好的度量.DBCC SHOWCONTIC 对于理解一个表或者索引的碎片程度有用.DBCC SHOW_STATISTICS 可以显示索引中包含有多少个重复值.重复值的数量越高,选择性就越低,要记住,在索引选择期间,查询优化器更偏好高选择性.

DBCC SHOW_STATISTICS 在度量一个索引效果的时候非常有用.

原创粉丝点击