没有where子句与where子句的M​​ySql Update查询

时间:2013-11-26 06:36:33

标签: php mysql

我正在尝试重置一个包含大约400万条记录的大表中的某些值。

我只是想知道哪种方法更好:

UPDATE TABLENAME SET VAL1=0, VAL2=0, VAL3=0;

foreach ( $catIds as $catId )
    execUpdate("UPDATE TABLENAME SET VAL1=0, VAL2=0, VAL3=0 WHERE CAT_ID='".$catId."';");

所以实际的问题是,一次性运行它或者更新应该分解成块是否安全?

此致

2 个答案:

答案 0 :(得分:3)

1 - Backup your database
2 - Use the WHERE clause with update broken into chunks 
3 - increase you max_execution_time and for memory_limit values  

答案 1 :(得分:2)

更新应该分解成块。您可以创建表格的分区。这样,执行比直接查询快得多。