2012-03-27 3 views
2

저는 약 2 백만 가지 제품에 대한 제품 가격 정보가있는 MySQL 테이블을 보유하고 있습니다. 매일 나는 가격 정보가 변경된 제품에 대해이 정보를 업데이트해야합니다. [큰 고통].큰 MySQL 테이블 매일 업데이트?

이 변경 사항을 처리하는 가장 좋은 방법은 변경된 제품이 compare and update과 같은 것일뿐입니다. 당신이 대량 업데이트

+0

전적으로 제품 변경을 감지/추적하는 방법에 따라 다릅니다. – nnichols

+0

솔직히 말해서 문제의 일부분은 - 나는 확신 할 수 없다. 나는 역사적인 가격 정보에 대해 신경 쓰지 않는다. 라이브 테이블에있는 기존 정보를 일괄 업데이트하는 것에 대해서만 [또는 일부 임시 복제, 비교 및 ​​업데이트 또는 무언가를 통해 가능할 수도있다] – Andy

+0

하지만 어떻게 변화를 찾고 있습니까? 그들은 어디에서 왔는가? 고유 한 식별자는 무엇입니까? 당신의 테이블 구조는 무엇입니까? – nnichols

답변

3

를 제공 할 수 있습니다

사랑 조언은 당신은 확실히 오히려 작은 업데이트 문을 많이보다 LOAD DATA INFILE를 사용한다.

첫째, 임시 테이블에 새로운 데이터를로드 : 당신은 또한 당신이있어 같은 파일에서 INSERT 새로운 기록하려면

UPDATE products, bar SET products.info = bar.info WHERE products.productid = bar.productid; 

:

LOAD DATA INFILE 'foo.txt' INTO TABLE bar (productid, info); 

그런 다음 업데이트를 실행 에서 업데이트하면 SELECT INTO OUTFILE의 기존 테이블에 일치하는 ID가없는 모든 레코드가 LOAD DATA INFILE을 사용하여 해당 아웃 파일을 제품 테이블에로드 할 수 있습니다.

2

수백만의 가격과 가격 비교 엔진을 유지하고 원본에서 찾은 각 행을 선택하고 각 행을 개별적으로 업데이트합니다. 행이 없으면 삽입합니다. 이를 가속화하기 위해 InnoDB 트랜잭션을 사용하는 것이 가장 좋습니다.

이것은 모두 소스 파일을 구문 분석하고 테이블을 업데이트하는 방법을 알고있는 PHP 스크립트에 의해 수행됩니다.

관련 문제