예, UPDATE는 DELETE + INSERT입니다.
예를 들어 원하는 경우 테이블 간단한 조회 테이블 (몇 개의 레코드 포함)을 가져 와서 테이블의 첫 번째 레코드를 가져 와서 업데이트하십시오. 다음과 같이 말하십시오 :
update table set [col1] = [col1]
where table_id = ?
이것은 데모 목적으로 단일 레코드를 업데이트하기 위해 수행되어야합니다.
그런 다음 테이블에서 select를 실행하면 테이블 상단에 있던이 레코드가 현재 하단에 있음을 알 수 있습니다.
SQL 처리 및 업데이트에 대한 표준입니다.
문자 그대로 OLD 레코드를 삭제하고 NEW 레코드를 삽입합니다. OLD 레코드로 어지럽히는 데 신경 쓰지 않습니다.
이 700k 행에 대한 업데이트를 수행 할 때 700k 행에 대해 DELETE + INSERT를 수행하고이를 모두 새로 인덱싱하여 한 번에 모두 수행한다는 것을 알고 있습니다. 메모리는 TRANSACT SQL을 다루기 때문에 기본적으로 메모리에있는 모든 것을 저장합니다.
어쩌면 당신은 다른 방법으로 업데이트를 수행하거나 한 번에 10k 개의 행을 피드 할 수 있습니다.
이 테이블의 모든 레코드를 업데이트합니다. 아무도 하나 이상의 레코드를 잠그지 않았습니까? 그리고 업데이트가 실제로 DELETE + INSERT임을 잊지 마십시오.이 때문에 모든 인덱스에 새 인덱스 튜플을 만들어야합니다. –
"업데이트는 실제로 DELETE + INSERT입니다." 정말요? 나는 그것에 대해 의심이있다. – flgdev
@flgdev 그래 ... 동시성 제어 및 MVCC, HOT 업데이트 등에 대한 설명서를 읽으십시오. 최근에 이것에 대한 좀 더 자세한 설명을했습니다. http://dba.stackexchange.com/q/84802/7788을 참조하십시오. –