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
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 쪽이 깔끔하니 싹 고쳐버리려고 합니다.