더북(TheBook)

01 | 일괄 처리

SQL은 집합적 언어로 테이블에 있는 각 로우를 하나씩 처리하는 것이 아니라 조건에 맞는 여러 로우를 한번에 처리한다. 반면 PL/SQL에서는 커서와 반복문을 이용해 로우 단위로 처리할 수 있는데, 후자는 개별적으로 세세하게 데이터를 다룰 수 있는 것이 장점이지만 성능적인 측면에서는 불리한 점이 많다.

예를 들어 사원 테이블에서 특정 조건에 맞는 사원을 삭제해야 한다고 하자. SQL을 사용한다면 DELETE문의 WHERE절에서 삭제할 조건을 주면 한 번에 삭제되지만, 커서를 만들어 반복 처리한다면 사원 수만큼 루프를 돌며 DELETE를 수행해야 할 것이다. 물론 이런 식으로 커서를 사용할 개발자는 없겠지만, 복잡한 로직을 처리하기 위해 커서가 필요할 때가 엄연히 존재하며 이런 경우 성능을 개선하는 데 사용할 수 있는 방법을 소개한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.