我正在尝试重置一个约有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
更新应该被分成块。您可以创建表的分区。这样,执行速度比直接查询快得多。