programing

Oracle 병합 대 선택 후 삽입 또는 업데이트

minimums 2023. 8. 26. 10:39
반응형

Oracle 병합 대 선택 후 삽입 또는 업데이트

무엇이 더 빠릅니까?

합병 선언문

    MERGE INTO table_name 
     USING dual
     ON (row_id = 'some_id')
    WHEN MATCHED THEN
     UPDATE SET col_name = 'some_val'
    WHEN NOT MATCHED THEN
     INSERT (row_id, col_name)
     VALUES ('some_id', 'some_val')

또는

선택 문을 쿼리한 다음 업데이트 또는 삽입 문을 사용합니다.

    SELECT * FROM table_name where row_id = 'some_id'

if rowCount == 0

    INSERT INTO table_name (row_id,col_name) VALUES ('some_id','some_val')

또 다른

    UPDATE table_name SET col_name='some_val' WHERE row_id='some_id'

일반적으로 한 SQL에서 수행할 수 있는 경우 여러 SQL 문에서 수행하는 것보다 성능이 더 우수합니다.

MERGE가 그 일을 할 수 있다면 저는 MERGE와 함께 할 것입니다.

또한 - 다른 제안: 예를 들어 다음과 같은 문장에서 데이터가 반복되는 것을 방지할 수 있습니다.

MERGE INTO table
 USING (SELECT 'some_id' AS newid,
               'some_val' AS newval
        FROM dual)
 ON (rowid = newid)
WHEN MATCHED THEN
 UPDATE SET colname = newval
WHEN NOT MATCHED THEN
 INSERT (rowid, colname)
 VALUES (newid, newval)

병합을 처리합니다.그것은 당신의 영역의 많은 부분을 소비할 수 있습니다.TEMP사용.HASH JOIN힌트를 사용하여 테스트합니다.FIRST_ROWS또는 사용UPDATE조인 플러스 보기INSERT와 함께NOT EXISTS.

언급URL : https://stackoverflow.com/questions/12274156/oracle-merge-vs-select-then-insert-or-update

반응형