如题,下面的查询的表有大约5W行记录
UPDATE SwitchTaskInfo
SET ProcessStatus = 39, StartTime = GETDATE(), EndTime = GETDATE(), Re = '忽略处理'
FROM SwitchTaskInfo a
WHERE 1=1
AND ProcessStatus = 0
AND NOT EXISTS(
SELECT 1
FROM (SELECT BTSID, MaxTaskID = MAX(TaskID)
FROM SwitchTaskInfo
WHERE 1=1
AND ProcessStatus = 0
GROUP BY BTSID
) b
WHERE a.BTSID = b.BTSID AND a.TaskID = b.MaxTaskID
)
这个语句测试了下性能很差,索引也加了,应该是子查询造成的,请教如何拆分改写该句子SQL性能优化
UPDATE SwitchTaskInfo
SET ProcessStatus = 39, StartTime = GETDATE(), EndTime = GETDATE(), Re = '忽略处理'
FROM SwitchTaskInfo a
WHERE 1=1
AND ProcessStatus = 0
AND NOT EXISTS(
SELECT 1
FROM (SELECT BTSID, MaxTaskID = MAX(TaskID)
FROM SwitchTaskInfo
WHERE 1=1
AND ProcessStatus = 0
GROUP BY BTSID
) b
WHERE a.BTSID = b.BTSID AND a.TaskID = b.MaxTaskID
)
这个语句测试了下性能很差,索引也加了,应该是子查询造成的,请教如何拆分改写该句子SQL性能优化
set ProcessStatus = 39, StartTime = GETDATE(), EndTime = GETDATE(), Re = '忽略处理'
from SwitchTaskInfo as a
where a.ProcessStatus=0 and not exists(select 1 from SwitchTaskInfo where BTSID=a.BTSID and ProcessStatus=a.ProcessStatus and TaskID>a.TaskID)