我正在尝试重置一个包含大约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."';");
所以实际的问题是,一次性运行它或者更新应该分解成块是否安全?
此致
答案 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)
更新应该分解成块。您可以创建表格的分区。这样,执行比直接查询快得多。