我有以下查询其运行缓慢:问题的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)。最好的使用取决于你的索引和数据分布。 –