집계함수에서의 NULL처리

윤상훈·2022년 2월 21일
0

SQLP

목록 보기
4/9

보통 CASE() 또는 NVL()에서 NULL을 0으로 변환하여 처리하려 하는데,
이는 자원낭비를 야기함으로 지양하는 것이 좋다.

그 이유는 아래와 같은 두가지 특성에 기인한다.

  • CASE문 사용시 ELSE를 생략하면 Default값은 NULL
  • 집계함수에서 NULL은 계산에 포함시키지 않음

아래 두 예시를 보면,

SUM (CASE MONTH WHEN 1 THEN SAL ELSE 0 END)

SUM(NVL (SAL,0))

첫번째 구문은 ELSE로 NULL인 경우를 0으로 변환한 뒤,
SUM()에서 불필요한 0을 계산에 포함시키기 때문에 비효율적이다.

두번째 구문 또한 NULL을 일부로 0으로 변환하여
SUM()에서 연산시키고 있다.

따라서 집계함수를 사용할 때는, null처리 시 불필요한 연산을 하고 있지
않은지 다시 한번 주의를 기울여야 한다.

-SQL 전문가 가이드, 한국데이터산업진흥원 p.215

profile
데이터를 사랑하는 개발자

0개의 댓글