Null 포함 문자 조회 0 4 614

by 정우성 [2018.08.03 10:02:43]


Column이 N 이 아닌값을 조회 할려고 하는데

Null인값은 조회가 안되네요 ㅜㅜ 

어떻게 하면 좋을까요

 

(  column is null or column <> N ) 이렇게게하면 될까요??

 

속도가 느려질까 걱정도 되네요

by 열심열심 [2018.08.03 10:33:16]

NOT EXISTS 하면되지 않을까요


by 예술은길다 [2018.08.03 11:24:50]
WITH T AS (
SELECT 'N' COL FROM DUAL UNION ALL
SELECT NULL COL FROM DUAL UNION ALL
SELECT 'Y' COL FROM DUAL 
)

SELECT *
  FROM T A
 WHERE NOT EXISTS (SELECT *
                     FROM T B
                    WHERE B.COL = 'N'
                      AND B.COL = A.COL
                  )

by 아발란체 [2018.08.03 15:11:44]

NOT EXISTS 해도 NULL은 인덱스에 저장되지 않아 풀스캔 탈 것 같습니다.

데이타가 많아지면 NULL 때문에 풀스캔하여 느려지는 것은 어쩔 수 없을 것 같습니다.

구조적으로 변경해야 할 것 같습니다.


by 마농 [2018.08.06 07:55:12]

네. ( column IS NULL OR column <> 'N' ) 이렇게 하시면 됩니다.
또는. ( NVL(column, 'x') <> 'N' ) 이렇게도 가능하구요.
속도와 상관 없을 것 같네요.
( column <> 'N' ) 은 빠르게 실행되는데
( column IS NULL OR column <> 'N' ) 은 느리다면?
두 조건은 엄연히 다른 조건이므로 속도비교는 무의미합니다.
이건 조건문 때문에 느린게 아니라 구조적으로 느린거죠.
어차피 부정형 조건이라 인덱스도 못타는 조건이구요.

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