전체 컬럼 비교 0 4 777

by 일곱난장이 [Oracle 기초] [2021.10.20 14:12:18]


select  
       a.CD1
     , a.CD2
     , a.CD3
     , a.CD4
     , a.CD5
     , a.CD6
     , a.CD7
     , a.CD8
     , a.CD9   
  from MMTABLE a
 where 1=1
   and a.MAST = 'MAST'
   and (a.CD1 = 'A' or a.CD2 = 'A' or a.CD3 = 'A'
       or a.CD4 = 'A' or a.CD5 = 'A' or a.CD6 = 'A'
       or a.CD7 = 'A' or a.CD8 = 'A' or a.CD9 = 'A')

조건을 쿼리를 줄일수 있을까요??

by 마농 [2021.10.20 14:37:54]

1. OR 조건을 IN 조건으로 변경
2. 불필요한 조건 삭제 1=1
3. 불필요한 별칭 삭제 a
 

SELECT cd1
     , cd2
     , cd3
     , cd4
     , cd5
     , cd6
     , cd7
     , cd8
     , cd9
  FROM mmtable
 WHERE mast = 'MAST'
   AND 'A' IN (cd1, cd2, cd3, cd4, cd5, cd6, cd7, cd8, cd9)
;

 


by 일곱난장이 [2021.10.20 16:38:19]

ㅎㅎ, 넘 감사합니다~~


by 우주민 [2021.10.21 09:08:37]

예에서 보여주는 별칭 설정 이나 1=1 같은 구문도 성능에 영향을 미치나요?

개발 편의성을 위해서 많이 쓰는 방법이라 질문 드립니다.


by 마농 [2021.10.21 10:28:18]
-- 성능에 영향 없습니다. 다만 눈에 거슬리죠.                                                
AND 'A' IN (cd1, cd2, cd3, cd4, cd5, cd6, cd7, cd8, cd9) -- 간결해 보임                  
AND 'A' IN (a.cd1, a.cd2, a.cd3, a.cd4, a.cd5, a.cd6, a.cd7, a.cd8, a.cd9) -- 복잡해 보임

여러 테이블 조인의 경우에는 알리아스 필수이지만.
단일 테이블 조회에 굳이 알리아스 쓸 필요 없습니다.

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