다른 테이블의 값으로 MySQL 테이블을 효율적으로 업데이트
한 MySQL 테이블을 다른 테이블의 정보로 업데이트해야 하는 경우 공유 값에 대한 일반적인 접근 방식은 JOIN을 사용하는 것입니다. 그러나 이러한 쿼리로 최적의 성능을 얻으려면 신중한 고려가 필요합니다.
다음 구조의 두 테이블이 있다고 가정해 보겠습니다.
원본:
id | value |
---|---|
1 | hello |
2 | fortune |
3 | my |
4 | old |
5 | friend |
업데이트 예정:
uniqueid | id | value |
---|---|---|
1 | NULL | something |
2 | NULL | anything |
3 | NULL | old |
4 | NULL | friend |
5 | NULL | fortune |
귀하의 목표는 원본의 해당 값을 기반으로 업데이트되도록 id 열을 업데이트하는 것입니다. 다음 쿼리는 간단해 보일 수 있지만
UPDATE tobeupdated, original SET tobeupdated.id = original.id WHERE tobeupdated.value = original.value
특히 큰 테이블의 경우 속도가 매우 느릴 수 있습니다. 이는 MySQL이 일치하는 행을 찾기 위해 두 테이블 모두에서 전체 테이블 스캔을 수행해야 하기 때문입니다.
성능 최적화
성능을 향상하려면 다음을 사용하는 보다 효율적인 접근 방식을 사용하세요. ON 절이 있는 JOIN:
UPDATE tobeupdated INNER JOIN original ON (tobeupdated.value = original.value) SET tobeupdated.id = original.id
INNER JOIN을 사용하면 MySQL은 두 항목 모두에서 일치하는 행만 고려합니다. 테이블. 또한 두 테이블의 값 열에 인덱스가 존재하도록 하면 검색에 필요한 시간을 크게 줄일 수 있습니다.
단순화된 구문
두 테이블 모두 단순화를 위해 USING 절을 사용할 수 있습니다.
UPDATE tobeupdated INNER JOIN original USING (value) SET tobeupdated.id = original.id
추가 고려 사항
위 내용은 JOIN을 사용하여 다른 테이블의 데이터로 MySQL 테이블을 효율적으로 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!