SQL 튜닝의 시작 (2013년)
(BLANK) 와 NULL 데이터 처리하기 0 0 54,728

by 구루비스터디 NULL BLANK [2018.07.14]


''(BLANK) 와 NULL 데이터 처리하기

''(BLANK)은NULL 일까?


  1  WITH T AS (
  2  SELECT NULL AS C1 FROM DUAL
  3  UNION ALL
  4  SELECT ' ' FROM DUAL
  5  )
  6  SELECT 'NULL', COUNT(*)
  7  FROM T
  8  WHERE C1 IS NULL
  9  UNION ALL
 10  SELECT 'NOT NULL',COUNT(*)
 11  FROM T
 12* WHERE C1 IS NOT NULL
SQL> /

'NULL'     COUNT(*)
-------- ----------
NULL              1
NOT NULL          1



TRIM & NVL 처리


-- 빈칸에 TRIM 하면 NULL으로 인신됨.
SQL> WITH T AS (
  2  SELECT NULL AS C1 FROM DUAL
  3  UNION ALL
  4  SELECT ' ' FROM DUAL
  5  )
  6  SELECT COUNT(*)
  7  FROM T
  8  WHERE NVL(TRIM(C1),'ISNULL') = 'ISNULL' ;

  COUNT(*)
----------
         2


''와 NULL 데이터 처리시 성능 문제.


널값과 빈값의 데이터를 모두 추출해야 된다면 Full table scan 으로 진행된다.
자주 사용하게 된다면 아래와 같이 FBI 추가 후 Where 변경을 검토할 수 있다.
...
WHERE (
RESULT = ' '
OR RESULT IS NULL
)

- 신규 INDEX 생성
CREATE INDEX ... ( NVL(TRIM(RESULT),'ISNULL') ) ;

- 변경 WHERE CLAUSE
WHERE NVL(TRIM(RESULT),'ISNULL') = 'ISNULL'


"데이터베이스 스터디모임" 에서 2013년에 "SQL튜닝의시작 " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3810

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입