성능테스트를 한 번 해 보았는데
Descriptor로 배열을 만들어 프로시저에 넘겨 배열 수 만큼 루프를 돌며 인서트 하는 방법과
addBatch로 insert문을 바로 받아 인서트 하는 방식을 비교 해 보았습니다
Descriptor는 루프를 도는 수가 많지만 중복 값이 있을 경우 그냥 Exception 처리 하여 넘어가고
addBatch는 sql 구문에 매번 중복값을 체크하는 구문( where not exists )을 넣어서 하는데,
제 생각으로는 Descriptor가 루프를 도는 코스트는 많지만 중복 값 발생 시 그냥 넘어가고
addBatch는 매번 셀렉트문을 실행하기 때문에 기존에 데이터가 많이 들어 가 있으면 상대적으로 Batch가 느려질 줄 알았는데
10만건이 넘게 데이터를 넣어 둔 상태에서도 항상 Batch가 더 빠르더라구요, 혹시 Batch 방식이 쿼리를 수행하는 법이 다른가요 ? 아니면 원래 루프를 도는 게 코스트가 압도적으로 많이 들어가는 건가요 ?