저는 매일 40000 개의 행이있는 다른 테이블을 사용하여 40000 개의 행을 가진 테이블을 업데이트해야하는 작은 애플리케이션이 있습니다. 이 작업은 내가에서 일하는 회사의 보고서 생성에 대해 서로 다른 (외부) 데이터 소스에서 데이터를 병합하고이 :(MYSQL 일치 항목에서 UPDATE의 행을 제거합니다.
가 지금 내가
UPDATE table1, table2 SET table1.column1=table2.column1 WHERE table1.column2=table2.column2
같은 형식의 쿼리를 사용하는이 시간에 나에게 사용할 수있는 유일한 방법입니다
그리고 완료하는 데 엄청난 시간이 걸립니다. 이것은 40k에서 40k를 비교하므로 1600000의 비교 결과를 얻을 수 있습니다. 가능한 경우 SQL이 작업에서 행을 제거하도록 지시하는 쿼리를 만들 수 있습니까? 매치/업데이트 할 때마다 40K 개의 행이 하나씩 삭제됩니다.
원본 테이블을 다음과 같이 복사하여 임시 테이블 및 결과 테이블을 업데이트 한 후 같은 키를 사용하여 행을 제거하지만 아마도 더 우아하고 빠른 방법이 있습니다 :
통찰력을 가져 주셔서 감사합니다!
/편집 - 정확한 - 오히려 'SELECT'가 아닌 'UPDATE':
두 테이블의 column2에 인덱스를 추가하면 시간이 현저히 줄어 듭니다. 또한 귀하의 선택 업데이 트해야한다고 생각합니다 :-) – vogomatix