select top 1 t.TaskId
FROM RequestBatch rb(nolock)
JOIN Request r(nolock)
ON r.RequestId = rb.RequestId
JOIN Task t(nolock)
ON t.RequestId = r.RequestId
AND t.BatchRequestId = rb.BatchRequestId
JOIN Bins b(nolock)
ON b.BinId = t.BinId
WHERE 1 = 1
AND rb.BatchNo ='0101PDOP1108300004'
ORDER by b.SortId
这个语句查询起来非常的慢
Task 表数据 在 1000W 左右 Request在700W RequestBatch 900W
BinS 几十W
但是 如果把 TOP 1 去掉就是秒杀
Order by b.SortId,t.TaskId 这样也是秒杀
请问 Oorder by 和TOP 同时应用时 TOP 为啥这么慢?
b.SortId 有非聚集索引
我在说一下表之间的关系
Request 对应 多条 RequestBatch 对应多条 Task
Bins 是基础信息 Task 也对应对个Bins
基本情况就是这样 去掉top 1 或者 order by 或者 order by 多加一列 都非常的快 就是top 和 order by b.sortid 非常的慢 慢到无法接受
请问这个是什么情况 希望能解答的详细一点