Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
SQL Server 2008에서는 “Merge” 라는 새로운 T-SQL Statement가 추가되었습니다.
“Merge”를 이용하면 Source 테이블과 Target 테이블을 동기화 하는 등의 시나리오에 있어서 기존의 INSERT/UPDATE/DELETE를 각각 수행하는 3-Step T-SQL보다 200% 이상의 뛰어난 성능을 제공합니다.
그럼 Merge 구문을 어떻게 사용하느냐? 아래의 간단한 예제만 봐도 쉽게 사용할 수 있습니다.
우선 테스트를 위해 Source와 Target이라는 2개의 테이블을 생성합니다.
CREATE TABLE Source (id INT, name NVARCHAR(100), qty INT);
CREATE TABLE Target (id INT, name NVARCHAR(100), qty INT);
그리고 Merge를 사용하여 Target 테이블을 Source 테이블과 동기화 시킬 수 있습니다.
(주석을 참조하시면 각각의 경우에 맞게 Action을 취할 수 있다는 것을 확인할 수 있습니다)
MERGE Target AS t
USING Source AS s
ON t.id = s.id
WHEN MATCHED AND
(t.name != s.name OR t.qty!= s.qty) THEN
-- 동일한 Row가 존재하고 데이터가 다르면
UPDATE SET t.name = s.name, t.qty = s.qty
WHEN NOT MATCHED BY TARGET THEN
-- 소스에는 Row가 존재하는데 Target에는 Row가 존재하지 않으면
INSERT VALUES (s.id, s.name, s.qty)
WHEN NOT MATCHED BY SOURCE THEN
-- Target에는 데이터가 존재하는데 Soruce에는 데이터가 없으면
DELETE
OUTPUT $action, inserted.id, deleted.id;
참 쉽죠~잉?