如 有 表1update 表1 set 字段a=ceiling(rand()*10000)
update 表1 set 字段a=字段b
有20万条数据,那么执行时间为3分钟,问题有很多这样的表,执行起来,就要花很多时间,,有不有其它的语句替代,或者说用储存过程?
update 表1 set 字段a=字段b
有20万条数据,那么执行时间为3分钟,问题有很多这样的表,执行起来,就要花很多时间,,有不有其它的语句替代,或者说用储存过程?
更新查询的优化同SELECT查询一样,需要额外的写开销。写速度依赖于更新的数据大小和更新的索引的数量。没有更改的索引不被更新。使更改更快的另一个方法是推迟更改然后在一行内进行多次更新。如果锁定表,同时做多个更新比一次做一个快得多。请注意对使用动态记录格式的MyISAM表,更新一个较长总长的记录可能会切分记录。如果经常这样该,偶尔使用OPTIMIZE TABLE很重要。参见13.5.2.5节,“OPTIMIZE TABLE语法”。
你自己可以看下执行这段时间时你的服务器cpu使用情况,猜测应该是比较高的