标签: execution

是否有选项或提示可以提高“in”子句中具有多个值的查询的性能

我们有一个表 CustomerNote,有 4 列 ID、CustomerID、Note、Date

CustomerID asc, Date desc 上有一个索引

当执行以下查询时

select top 30 
    Date 
from CustomerNote
where CustomerID in (1,5)
order by Date desc
Run Code Online (Sandbox Code Playgroud)

使用了索引,但它仍然获取 customerID 1 和 5 的所有 CustomerNote,然后排序/置顶,导致大量 CPU 使用。 在此输入图像描述

这是由于“in”子句中的多个值造成的。我知道“in”子句的值永远不会超过 10 个,因此如果 sql server 迭代 10 个,为每个 customerID 获取至少 30 个值并进行合并、排序和顶部,这将是一个更好的方法。是否有查询提示或选项可以实现此目的?

performance sql-server execution-plan execution

6
推荐指数
2
解决办法
1275
查看次数