SQL 执行效率

buttlyfly 2008-03-28 01:36:10
要按条件更新一个表的某个字段
两种写法那个效率快些?
第一种:
UPDATE
A
SET
A.a = case when 条件(1) then 1 else A.a end
from
表 A
第二种:
UPDATE
A
SET
A.a = 1
from
表 A
where
条件(1)
...全文
69 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ojuju10 2008-03-28
  • 打赏
  • 举报
回复


2种写法是有区别的


第一种是更新所有表,第二种只更新筛选出来的记录
hui_hui_2007 2008-03-28
  • 打赏
  • 举报
回复
第二种呀。可以看下执行计划
wangdehao 2008-03-28
  • 打赏
  • 举报
回复
2
可以用上索引
wpeng8218 2008-03-28
  • 打赏
  • 举报
回复
效率上来说第二种好些,如果数据量小的话没什么差异。第一种需要遍历整个表进行更新检索,第二中只对筛选出来的记录进行更新哈!
buttlyfly 2008-03-28
  • 打赏
  • 举报
回复
写法?是不是说效率差不多
具体情况? 看数据量的大小吗
ojuju10 2008-03-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 buttlyfly 的回复:]
引用 1 楼 liangCK 的回复:
2

---------------------------
能说明一下理由吗?
详细一点
[/Quote]

-----------

第2种好,应该第一种是更新了一个表所有的记录

而第二种,只更新了满足where后面筛选条件的部分记录

所以第二种好

ojuju10 2008-03-28
  • 打赏
  • 举报
回复

写法上都差不多,看具体情况和自己的习惯把
buttlyfly 2008-03-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 liangCK 的回复:]
2
[/Quote]
---------------------------
能说明一下理由吗?
详细一点
liangCK 2008-03-28
  • 打赏
  • 举报
回复
2

34,590

社区成员

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

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