SQL存储过程优化

时间:2017-10-23 08:07:04

标签: sql sql-server sql-server-2008 optimization query-optimization

我有一个在PFX,EFF_DT,TERM_DT上有非聚集索引的表。执行计划显示RID LookUp堆成本为99%,而不是索引扫描。我想知道为什么没有索引扫描不在执行计划中,并且RID LookUp是很好的方法。

SELECT DISTINCT
    ID
    ,PFX
    ,EFF_DT
    ,ID1
    ,TERM_DT
    ,RULE
    ,EXP_CAT
    ,ACCT_CAT
    ,OPTS
    ,RULE_ALT
    ,RULE_ALT_COND
FROM TempMaster
WHERE PFX = 'I004'
ORDER BY EFF_DT DESC

1 个答案:

答案 0 :(得分:0)

  

我想知道索引扫描不在执行计划中的原因

SQLSERVER是一个基于成本的优化器,它试图在合理的时间内选择一个好的计划。

  

是RID LookUp是好方法

RID查找并不总是一种好方法,因为RID查找是随机搜索,它们会影响IO活动。

如果这个查询每天执行一次,我不担心。如果这个查询更频繁,我会避免通过在非聚集索引中包含这些列来消除looup