> 데이터 베이스 > MySQL 튜토리얼 > JOIN을 사용하여 다른 테이블의 데이터로 MySQL 테이블을 효율적으로 업데이트하려면 어떻게 해야 합니까?

JOIN을 사용하여 다른 테이블의 데이터로 MySQL 테이블을 효율적으로 업데이트하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2025-01-03 21:00:39
원래의
367명이 탐색했습니다.

How Can I Efficiently Update a MySQL Table with Data from Another Table Using JOINs?

다른 테이블의 값으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿