DB 의 IF 구문을 MERGE INTO 구문으로 바꾸었을때 성능 차이에 대해서

프로그래밍 일반에 관한 포럼입니다.

Moderator: 류광

Locked
꾸오
Posts: 30
Joined: 2003-12-16 15:16
Location: 게임회사다녀요
Contact:

DB 의 IF 구문을 MERGE INTO 구문으로 바꾸었을때 성능 차이에 대해서

Post by 꾸오 »

이번에 SQL 서버를 업그레이드 해서 MERGE INTO 구문을 사용 할수 있게 되었는데요

DB SQL 짤때 늘 귀찮았던 이슈중 예를들어
하나가 인벤토리에 아이템 하나 추가 되었을때
같은 종류 아이템 있나 검색 해서 있으면 update로 더해주고 없으면 insert 해주는 쿼리 있지않습니까

Code: Select all

IF EXISTS(SELECT * FROM ITEM WHERE ITEM_KIND = @ITEM_KIND)
Begin
UPDATE ITEM SET COUNT = COUNT + @ADDCOUNT WHERE ITEM_KIND  = @ITEM_KIND
End
Else
INSERT INTO ITEM (ITEM_KIND, COUNT) VALUES (@ITEM_KIND, @ADDCOUNT)
End
이런거 같은게 왠지 내부적으로 select 를 두번하는거 같고 조건문도 똑같은거가 두번들어가서 눈에 밟혀서

Code: Select all

MERGE INTO ITEM USING DUAL ON ( ITEM_KIND  = @ITEM_KIND)
WHEN MATCHED THEN 
      UPDATE SET  COUNT = COUNT + @ADDCOUNT
WHEN NOT MATCHED THEN 
      INSERT (ITEM_KIND, COUNT) VALUES (@ITEM_KIND, @ADDCOUNT)
이런형태로 바꾸어 보려고 합니다.

인터넷 검색등에서는 좀더 낫다는 이야기도 있지만
제가 DB가 전문도 아니고 그냥 필요하면 같이 하는 사람인지라 성능에 대한 확신이 서지 않네요
구문을 저렇게 교체해 보시거나 또는 현재 프로젝트에서 MERGE INTO 구문을 이런 부분에서 사용해 보셨던분이 계시면 조언 부탁드립니다.

MERGE INTO 의 성능이 더 낫거나 비슷하면 MERGE INTO 쪽이 깔끔하니 싹 고쳐버리려고 합니다.
LUA 굿
Locked