코딩모타는사람
200
2021-01-21 09:40:49 작성 2021-01-21 09:45:32 수정됨
4
221

DB INSERT 작업 전에 PK컬럼이 중복되는 입력인지 EXISTS로 확인하는 과정이 불필요한가요?



안녕하세용

DB INSERT 프로시저를 만들었는데, 아래처럼 입력된 코드값이 이미 테이블에 있다면 종료하고,

없으면 INSERT 처리를 하도록 만들었습니다. (PRODUCT_CODE는 PK 컬럼입니다)


근데 이 과정도 결국 쿼리를 한번 실행하는 과정이니 시스템에 부하가 될 것 같습니다.


이런 과정도 빼는게 좋은 프로시저일까요? 어떻게 처리하는게 맞나요 ??

---------------------------------------------------------------------------------------------------

-- 상품코드가 기존에 존재하거나, 입력된 값이 없다면 프로시저 종료처리

IF EXISTS (SELECT PRODUCT_CODE FROM PRODUCT WHERE PRODUCT_CODE = @PRODUCT_CODE OR @PRODUCT_CODE IS NULL )

BEGIN

PRINT '상품코드를 확인하세요.'

END

0
  • 답변 4

  • 성능최적화계획
    775
    2021-01-21 09:48:17 작성 2021-01-21 09:50:35 수정됨

    개인적으로 얕게 생각해보면


    키가 시스템에서 만들어지는 값(시리얼번호 등)이라면 불필요할거 같아 보이고

    키가 입력받아 처리되는 값(사용자id)이라면 필요해 보이기도 하네여..


    근데 저라면 프로시저에서 select 안하고 exception 처리할거 같아엽

  • 브로콜리먹기
    160
    2021-01-21 10:02:32
    Mysql이나 firebase 같은 경우 PK가 중복되면 알아서 에러를 뱉으면서 멈춥니다. 지금 뭘 쓰시는지 모르겠지만 한번 해보시는거 추천..
  • 코딩모타는사람
    200
    2021-01-21 10:05:26

    성능최적화계획  감사합니다 이제 막 공부를 시작하는 단계라 이런게 있는지 처음 알았습니다  ㅎㅎ



  • 코딩모타는사람
    200
    2021-01-21 10:07:37

    브로콜리먹기 

    멈추기는 하지만 뭔가 에러나 예외처리를 해주는게 좋은 코드라고 들어서

    한번 해보려고 했었습니다 ㅎㅎ


    그리고 다른 프로그램에서 이 프로시저를 호출할 때

    이런 에러처리가 없으면 에러 내용을 전달하지 못할 것 같았는데 아닐까요?? 

    제가 잘 몰라서 질문드립니다 


  • 로그인을 하시면 답변을 등록할 수 있습니다.