这样的update能不能改得高效点

jianshao810 2012-03-28 02:45:15


update MarketingCaseExpire
set ProjectEndState=case
when DATEDIFF(month, getdate() , ProjectEndTime)=0 then '当月到期'
when DATEDIFF(month, getdate() , ProjectEndTime)<0 then '已到期'
when DATEDIFF(month, getdate() , ProjectEndTime)=1 then '下月到期'
when DATEDIFF(month, getdate() , ProjectEndTime)>1 then '2个月后到期'
end,
CurrentMonthExpire=case
when DATEDIFF(month, getdate() , ProjectEndTime)=0 then 1
else 0
end,
Expired=case
when DATEDIFF(month, getdate() , ProjectEndTime)<0 then 1
else 0
end,
TwoMonthsAfterExpired=case
when DATEDIFF(month, getdate() , ProjectEndTime)>1 then 1
else 0
end,
OneMonthsAfterExpired=case
when DATEDIFF(month, getdate() , ProjectEndTime)=1 then 1
else 0
end
...全文
58 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianshao810 2012-03-28
  • 打赏
  • 举报
回复
很多时候性能的好坏不跟语句的长短有关,而是跟你的算法有关,算法简单了就好
学习啦。。谢谢
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

楼主的语句就行了,语句简单没什么可优的
[/Quote]

很多时候性能的好坏不跟语句的长短有关,而是跟你的算法有关,算法简单了就好
jianshao810 2012-03-28
  • 打赏
  • 举报
回复
谢谢。。
我以为
DATEDIFF(month, getdate() , ProjectEndTime)
这个都是相同的,应该有些我没见过的写法呢。
jinjazz 2012-03-28
  • 打赏
  • 举报
回复
性能上没啥优化的,语句想看到短,那就把业务逻辑写到函数里面去
中国风 2012-03-28
  • 打赏
  • 举报
回复
楼主的语句就行了,语句简单没什么可优的
AcHerat 元老 2012-03-28
  • 打赏
  • 举报
回复
应该可以了吧!再不行楼主可以分开更新,条件就是与当前日期的月份差,小于0和大于1分别更新。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧