var*_*ble 5 index sql-server nonclustered-index
按 LastName、FirstName、MiddleName 的顺序设置单个非集群。
SELECT * FROM PERSON
WHERE FirstName='xyz'
Run Code Online (Sandbox Code Playgroud)
为什么执行计划使用索引而不直接扫表?我问是因为名字是索引的第二个成员,因此没有排序,那么为什么 SQL Server 决定查询非聚集索引?
MBu*_*chi 13
这是使用最少的 IO 操作给出结果的问题。
该索引比整个表小得多,并且基于统计信息 SQL Server 知道单个名称 ('xyz') 的平均基数。
因此,计算读取该索引的页数加上检索表的其他字段的查找页数(出现次数 * 索引深度)小于扫描不按名称排序的整个表。
这可能就是您面临的情况。
尝试使用set statistics io on
有或没有该索引来验证我的猜测。
归档时间: |
|
查看次数: |
787 次 |
最近记录: |