SQL 기초 및 PLSQL 실무 강좌 자료] DECODE 사용시 주의사항
SQL 기초 및 PLSQL 실무 강좌 자료] DECODE 사용시 주의사항
실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.
DECODE 사용시 주의사항
* 펼칠 컬럼이 너무 많을때는 먼저 GROUP BY 한 후 처리하라.
▶ select dept_no,
sum(decode(substr(wk_dt,7,2),’01’,amt)) d1,
sum(decode(substr(wk_dt,7,2),’02’,amt)) d2,
sum(decode(substr(wk_dt,7,2),’03’,amt)) d3,
sum(decode(substr(wk_dt,7,2),’04’,amt)) d2,
,,,
sum(decode(substr(wk_dt,7,2),’31’,amt)) d31
▶ select dept_no,
sum(decode(dd,’01’,amt)) d1,
sum(decode(dd,’02’,amt)) d2,
sum(decode(dd,’03’,amt)) d3,
sum(decode(dd,’04’,amt)) d4,
,,,,
sum(decode(dd,’31’,amt)) d31
from ( select dept_no, substr(wk_dt,7,2) dd, sum(amt) amt
from tab1
where wk_dt like ‘200401%’
)
group by dept_no
▶ COUNT, SUM의 비교
① sum(decode(col1,’A’,1,0))
② sum(decode(col1,’A’,1))
③ count(decode(col1,’A’,1,0))
④ count(decode(col1,’A’,1))
⑤ count(decode(col1,’A’,’C’))
①, ②, ④, ⑤ 는 동일하다.
③ 의 결과는 count(*) 과 동일하다.
①은 ②보다 불리하다(불필요한 0 연산)
②는 ④, ⑤ 보다 불리
④, ⑤ 는 동일하다.
SUM은 COUNT에 비해 30~50% 불리함
COUNT는 not null 인 경우에만 처리
COUNT를 사용할 수 있다면 SUM을 사용하지 마라.
* DECODE
□ DECODE 함수와 CASE 문
▷ DECODE 함수 내부에서 DECODE문을 사용하는 경우에는 성능저하 발생
▷ UNION ALL를 사용할 경우 동일 테이블에 대한 인덱스 스캔이나 테이블 스캔 반복발생으로 성능저하
▷ Concat(‘||’) 함수로 비교대상컬럼를 묶어서 DECODE 함수의 중복사용을 줄이고, CASE 문으로 비교하는 방식 추천
(INDEX 주의)
'오라클 > Oracle,SQL' 카테고리의 다른 글
SQL 기초 및 PLSQL 실무 강좌 자료] 실무에서 서브쿼리 사용시 주의사항 (2) (0) | 2017.02.13 |
---|---|
SQL 기초 및 PLSQL 실무 강좌 자료] 실무에서 서브쿼리 사용시 주의사항 (0) | 2017.02.13 |
SQL 기초 및 PLSQL 실무 강좌 자료] DECODE 사용시 주의사항 (0) | 2016.11.15 |
SQL 기초 및 PLSQL 실무 강좌 자료] 일반 함수 CASE 함수 (0) | 2016.11.10 |
SQL 기초 및 PLSQL 실무 강좌 자료] 일반 함수 DECODE 함수 (0) | 2016.11.10 |