php
  • mysql
  • 2013-11-26 235 views 1 likes 
    1

    我正试图重置一个大型表中有大约400万条记录的值。MySql更新查询没有where子句vs与where子句

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

    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."';"); 
    

    所以实际的问题是,是安全的,在一次运行全部或更新应分成块?

    Regards

    回答

    2

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

    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 
    
    相关问题