한 MySQL 테이블을 다른 MySQL의 값으로 업데이트합니다.
다른 MySQL 테이블 정보를 기반으로 업데이트하려고 합니다.
나의original
테이블은 다음과 같습니다.
id | value
------------
1 | hello
2 | fortune
3 | my
4 | old
5 | friend
그리고 그tobeupdated
테이블은 다음과 같습니다.
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | | old
4 | | friend
5 | | fortune
갱신하고 싶다id
에tobeupdated
와 함께id
부터original
에 기반을 둔value
(저장된 파일)VARCHAR(32)
필드)를 참조해 주세요.
갱신된 테이블은 다음과 같습니다.
uniqueid | id | value
---------------------
1 | | something
2 | | anything
3 | 4 | old
4 | 5 | friend
5 | 2 | fortune
도움이 되는 질문이 있습니다만, 매우 느립니다.
UPDATE tobeupdated, original
SET tobeupdated.id = original.id
WHERE tobeupdated.value = original.value
이로 인해 CPU가 최대치를 초과하여 결과적으로 일부 업데이트만 수행된 타임아웃이 발생합니다(일치하는 값은 수천 개).매칭은 알고 있습니다.value
속도가 느리겠지만 이 데이터만 일치시킬 수 있어요
이와 같이 값을 갱신할 수 있는 더 좋은 방법이 있을까요?병합된 결과에 대한 세 번째 테이블을 생성할 수 있습니다. 더 빠를 수 있다면?
MySQL - 다른 테이블의 값으로 테이블을 업데이트하려면 어떻게 해야 합니까?를 시도해 봤지만 별로 도움이 되지 않았습니다.좋은 생각 있어요?
MySQL 초보자를 도와줘서 고마워요!
UPDATE tobeupdated
INNER JOIN original ON (tobeupdated.value = original.value)
SET tobeupdated.id = original.id
그걸로 충분할 거야, 그리고 실제로 네 것과 똑같은 일을 하는 거야.다만, 복수의 「WHERE」조건보다 「JOIN」구문을 사용하는 것이 좋기 때문에, 읽기 쉽다고 생각합니다.
천천히 달리는 것은 테이블이 얼마나 큰가요?인덱스가 있어야 합니다.tobeupdated.value
그리고.original.value
편집: 쿼리를 단순화할 수도 있습니다.
UPDATE tobeupdated
INNER JOIN original USING (value)
SET tobeupdated.id = original.id
USING
조인의 두 테이블이 동일한 이름을 가진 경우 단축형입니다.key
예를 들어id
. equi-http://http://en.wikipedia.org/wiki/Join_(SQL)#Equi-join 를 참조해 주세요.
이러한 테이블의 용도에 따라 다르지만 삽입 및 업데이트 시 원래 테이블에 트리거를 설정하는 것을 고려할 수 있습니다.삽입 또는 업데이트가 완료되면 원래 테이블의 한 항목만 기준으로 두 번째 테이블을 업데이트합니다.그게 더 빠를 거예요.
언급URL : https://stackoverflow.com/questions/5727827/update-one-mysql-table-with-values-from-another
'programing' 카테고리의 다른 글
jquery "this"의 첫 번째 아이 쿼리 (0) | 2022.12.10 |
---|---|
Mysql을 사용하여 마지막으로 삽입된 ID 검색 (0) | 2022.10.31 |
전자에 관한 Vuex 액션 디스패치 문제 (0) | 2022.10.31 |
pip을 사용한 libxml 설치 오류 (0) | 2022.10.31 |
Python의 오래된 스타일과 새로운 스타일의 클래스는 무엇이 다릅니까? (0) | 2022.10.31 |