首页 > 数据库技术 > 详细

4W条人才表循环处理业务sql优化过程

时间:2017-01-24 17:09:22      阅读:151      评论:0      收藏:0      [点我收藏+]

场景:

使用windows服务定时更新合同数据:执行存储过程(pas_RefreshContractStatus),但存储过程里面有一个需要更新4W条人才表循环处理业务

问题:

循环更新4W条人才表状态字段

优化前:

 

     UPDATE  pt
        SET     StatusText = CASE 
                                  WHEN EXISTS ( SELECT  1
                                    FROM    pas_ContractQuit c
                                    WHERE   IsActive=1 AND ,+TalentIDs+, LIKE %,+CONVERT(NVARCHAR(20),pt.ID)+,%)
                                  THEN 已退租
                                  ELSE 未申请
                             END
        FROM    pas_Talent pt

 

耗时:1分07秒

技术分享

优化后:

 

--定义人才行转列start
SELECT  b.col ID
INTO    #TalentIDs
FROM    pas_ContractQuit c
        OUTER APPLY ( SELECT    *
                      FROM      dbo.Split(TalentIDs, ,)
                    ) b
WHERE   IsActive = 1
        --定义人才行转列end

UPDATE  pt
SET     StatusText = CASE WHEN EXISTS ( SELECT  1
                                        FROM    #TalentIDs
                                        WHERE   pt.ID = #TalentIDs.ID )
                          THEN 已退租
                          ELSE 未申请
                     END
FROM    pas_Talent pt

 

耗时:2秒

 

技术分享

4W条人才表循环处理业务sql优化过程

原文:http://www.cnblogs.com/bwlluck/p/6347272.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!