sql-server-2005 – 如何才能获得聚簇索引而不是聚簇索引扫描?
我在SQL Server 2005中有一个存储过程,当我运行它并查看它的执行计划时,我注意到它正在进行聚簇索引扫描,这使得它的成本为84%.我已经读过,我必须修改一些东西以获得Clustered Index Seek,但我不知道要修改什么.
我会感激任何帮助. 谢谢, 布赖恩 解决方法没有任何细节很难猜出问题是什么,甚至是否是一个问题.扫描而不是搜索的选择可以由许多因素驱动:>查询表示覆盖整个表的结果集. IE浏览器.查询是一个简单的SELECT * FROM< table>.这是一个简单的案例,可以通过一个简单的索引扫描完全覆盖,而无需考虑其他任何事情. >查询表示整个表的子集,但过滤谓词位于不属于群集键的列上,并且这些列上也没有非clustred索引.除了完整扫描之外,这些都不是替代计划. >优化器选择扫描. >当替代方案是非聚集索引然后扫描(或范围搜索)但是选择是使用聚簇索引时,由于缺少查询投影的非聚集索引覆盖,原因通常可以追溯到index tipping point .请注意,这不是您的问题,因为您期望聚集索引搜索,而不是非聚集索引搜索(假设问题是100%准确并记录…) 这些是一些快速指针,指出在预期聚簇索引搜索时可能存在聚簇索引扫描的原因.这个问题非常通用,除了依靠8球之外,不可能回答’为什么’.现在,如果我将您的问题正确记录并正确表达,那么期望聚集索引寻找它意味着您正在根据已确定的键值搜索唯一记录.在这种情况下,问题必须与WHERE子句的SARGability有关. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |