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)
...全文
45 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-28 01:36
社区公告
暂无公告