小编Far*_*oon的帖子

为什么 SQL Server 查询计划在查询中不使用索引几乎类似于使用索引的查询?

我有两个结构相似的 UPDATE 查询,但其中一个的 SQL Server 查询计划显示正在使用的索引,而另一个仅显示常规表扫描。

以下是查询(根据查询计划,#1 不使用索引,#2 使用)-

 UPDATE Payment_Metadata 
    SET 
    Payment_Metadata.CommodityCode = 'RAW MATERIALS', 
    Payment_Metadata.C1 = 'RAW MATERIALS', 
    Payment_Metadata.C2 = 'INGREDIENTS', 
    Payment_Metadata.C3 = 'OTHER ', 
    Payment_Metadata.RuleText = '---', 
    Payment_Metadata.LastUpdatedIndex = Payment_Metadata.LastUpdatedIndex + 1, 
    Payment_Metadata.IsExcluded = 0, 
    Payment_Metadata.LogText = 'Commodity>Raw Materials>Ingredients>Other' 
    FROM 
    Payment_Metadata 
    WHERE 
    Payment_Metadata.IsProcessed = 0 
    AND (Payment_Metadata.EnrichedVendor = 'NFL' 
         OR Payment_Metadata.Vendor_No = 'NFL')
Run Code Online (Sandbox Code Playgroud)

第二个查询使用索引:

UPDATE Payment_Metadata 
SET 
Payment_Metadata.CommodityCode = 'RAW MATERIALS', 
Payment_Metadata.C1 = 'RAW MATERIALS', 
Payment_Metadata.C2 = 'INGREDIENTS', 
Payment_Metadata.C3 = 'OTHER ', 
Payment_Metadata.RuleText = '---', 
Payment_Metadata.LastUpdatedIndex = …
Run Code Online (Sandbox Code Playgroud)

sql-server execution-plan nonclustered-index

3
推荐指数
1
解决办法
1759
查看次数