日期:2014-05-18  浏览次数:20574 次

这两种update 哪个效率好?
有一个int字段(不是主键 不是索引)


里面有很多值, 值没有分布规律,

这个 int值 大部分是0,  


现在我要把所有不是0的 改成0

SQL code

-- 方法1
update [表] set [字段] = 0



SQL code

-- 方法2
update [表] set [字段] = 0 where [字段 <> 0]





------解决方案--------------------
我觉得第二个
------解决方案--------------------
方法一是全部更新为0
方法二是把不为0的更新为0

功能不同,比较效率没有意义呀
------解决方案--------------------
第二个是完全按照你的意思把不为0的更新为0

第一个是把所有都更新为0

感觉第一个的计算量比第二个大
------解决方案--------------------
数据量不大的情况下,执行时间上没有啥区别。
------解决方案--------------------
不能比、不一样的功能不能比。。
------解决方案--------------------
假设数据量有1000万,其中只有一个不等于0的。

必然是给字段加上索引,然后按条件更新比较快。

如果数据库全是不等于0的,两者就都需要扫描表,这个时候条件就显得有些多余了。

要根据实际情况实际分析。
------解决方案--------------------
探讨

引用:

不能比、不一样的功能不能比。。



按我现在这个表, 哪一种速度会快?
推荐一下吧