2016-09-01 2 views
1

업데이트해야 할 테이블이 있습니다. 그러나 변경된 데이터의 양 (알 수없는 데이터와 데이터베이스의 데이터를 비교)은 알 수 없습니다.테이블을 부분적으로 업데이트 할 때 SELECT 및 UPDATE에 대한 성능 비교

저는 이것을 구현하는 두 가지 방법을 생각할 수 있습니다.

  1. 모든 데이터를 선택하고 웹 서버에서 비교하십시오. 그런 다음 변경된 내용 만 으로 업데이트하십시오.
  2. 모든 데이터를 업데이트하기 만하면됩니다.

성능 경계선이 있습니다. 영향을받은 행이 1,000 미만이라면, 아마도 방법 2가 더 좋을 것입니다.

내 질문은 :

  1. 이 거기에 일반적인 기준인가?
  2. 일반적으로 업데이트 작업과 비교할 수 있습니까?

데이터베이스가 필요한 경우 MySQL이라고 가정합니다. 당신이 (대부분 같은 데이터 가능) 전체 테이블을 교체하는 경우

+2

이것을 미세 최적화라고합니다. 정상적인 방법으로 문제가 발생하면 (업데이트 사용) 그런 종류의 최적화에 대해서만 생각해야합니다. – Solarflare

답변

0

, 그것은이 방법을 수행하고 걱정하는 매우 정직있는 방법에 대한 다음의 일부분 만

CREATE TABLE new LIKE real; 
Load the new data entirely into `new` 
RENAME TABLE real TO old, new TO real; -- atomic and instantaneous (no downtime) 
DROP TABLE old; 

행을 사용할 수 있고 임시 테이블에로드 한 다음 다중 테이블 UPDATE을 사용하여 새로운 값을 실제 테이블로 전송할 수 있습니다.

새 데이터에 새 행이있는 경우 새로운 행을 찾으려면 다른 단계가 필요하고 실제 행에는 INSERT ... SELECT LEFT JOIN ...이 필요합니다.

추가 논의가 필요한 경우 자세한 내용을 제공해주십시오.