2013-11-26 3 views
1

약 4 백만 개의 레코드가있는 큰 테이블에서 일부 값을 다시 설정하려고합니다.Where 절이없는 MySql 업데이트 쿼리 where 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."';"); 

그래서 실제 질문은 그게 안전에-한 번 모두를 실행하거나 업데이트해야한다입니다 덩어리로 깨진거야?

감사는

답변

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