首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问怎么把带子查询的sql语句拆分开写

2013-07-08 
请教如何把带子查询的sql语句拆分开写如题,下面的查询的表有大约5W行记录UPDATE SwitchTaskInfoSET Proces

请教如何把带子查询的sql语句拆分开写
如题,下面的查询的表有大约5W行记录
UPDATE SwitchTaskInfo
SET ProcessStatus = 39, StartTime = GETDATE(), EndTime = GETDATE(), Remark = '忽略处理'
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 性能优化
[解决办法]
可能不是子查询的问题
lz看一下你的索引是否使用,你查看一下你的执行计划
[解决办法]

update a
set ProcessStatus = 39, StartTime = GETDATE(), EndTime = GETDATE(), Remark = '忽略处理'
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)

热点排行