我们有一个表 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 个值并进行合并、排序和顶部,这将是一个更好的方法。是否有查询提示或选项可以实现此目的?