没有where子句的MySql更新查询与有where子句的查询


MySql Update query without where clause vs with where clause

我正在尝试重置一个约有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."';");

因此,实际的问题是,一次运行所有更新是否安全,还是应该将更新分成块?

问候

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  

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