我有以下查詢其運行緩慢:問題的SQL Server查詢
WITH AcdTran
AS (select SequenceNo,
ReqID,
PolNumber,
transaction_id,
application_data,
trans_type,
retries,
status,
direction
from dbo.acord_transaction_benchmark with (nolock)
where direction = 'OUT')
select top 1 *
from AcdTran a
where a.transaction_id = (select top 1 transaction_id
from AcdTran b
where b.PolNumber = a.PolNumber
order by ReqID,
SequenceNo,
transaction_id)
and (status = 'New'
or status = 'Resubmit')
and retries > 0
我如何優化呢?跑得更快?
謝謝
什麼是它應該做的?你的'select top 1 *'缺少一個'order by' –
它應該按順序選擇一個新的狀態爲New或重新提交的記錄。所以,如果我有2個記錄的某個PolNumber,並且1有序列1,另一個有序列2,它應該選取序列1的那個。 – JustMe
好吧,這只是一個標準的「最大n個每組」查詢,然後我認爲。有3種方法[在此評估](http://www.sqlmag.com/article/departments/optimizing-top-n-per-group-queries)。最好的使用取決於你的索引和數據分佈。 –