>  기사  >  데이터 베이스  >  동일한 값으로 여러 MySQL 테이블을 효율적으로 업데이트하려면 어떻게 해야 합니까?

동일한 값으로 여러 MySQL 테이블을 효율적으로 업데이트하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-11-04 05:29:29752검색

How can I efficiently update multiple MySQL tables with identical values?

여러 MySQL 테이블에 걸친 동시 업데이트

비정규화 목적으로 동일한 값 업데이트가 필요한 여러 테이블로 작업할 때 수행하는 작업이 비효율적일 수 있습니다. 각 테이블에 대한 별도의 업데이트. 다행스럽게도 MySQL은 다중 테이블 업데이트를 사용하여 이러한 업데이트를 단일 작업으로 결합하는 방법을 제공합니다.

다음 시나리오를 고려하십시오.

<code class="sql">-- Table One Update
UPDATE Table_One
SET win = win+1, streak = streak+1, score = score+200
WHERE userid = 1 AND lid = 1 LIMIT 1

-- Table Two Update
UPDATE Table_Two
SET win = win+1, streak = streak+1, score = score+200
WHERE userid = 1 LIMIT 1</code>

이 예에서는 두 테이블 모두 동일해야 합니다. 표 2에 "lid" 필드가 없는 것을 제외하고 값이 업데이트됩니다. 이러한 업데이트를 결합하려면 다음과 같이 다중 테이블 업데이트를 사용할 수 있습니다.

<code class="sql">UPDATE Table_One a INNER JOIN Table_Two b ON (a.userid = b.userid)
SET
  a.win = a.win+1, a.streak = a.streak+1, a.score = a.score+200,
  b.win = b.win+1, b.streak = b.streak+1, b.score = b.score+200
WHERE a.userid = 1 AND a.lid = 1 AND b.userid = 1</code>

이 쿼리에서는 "INNER JOIN" 문을 사용하여 "userid" 열에서 두 테이블을 조인합니다. 일치하는 행만 업데이트됩니다. "SET" 절은 두 테이블 모두에 대한 업데이트 값을 정의합니다.

다중 테이블 업데이트는 "LIMIT" 절을 지원하지 않으므로 잠재적으로 의도한 것보다 더 많은 행을 업데이트할 수 있다는 점에 유의하는 것이 중요합니다. 이러한 경우 업데이트를 보다 세부적으로 제어하려면 저장 프로시저나 트랜잭션을 사용하는 것이 좋습니다.

위 내용은 동일한 값으로 여러 MySQL 테이블을 효율적으로 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.