DECODE vs CASE 문 성능 문의 0 6 9,422

by 웬쑤 [Oracle 기초] [2014.01.28 16:50:51]



안녕하세요.

오라클에서 DECODE와 CASE문이 있는대

동일한 기능으로 사용할 경우 어떤것이 더 빠른지

궁금해서 문의 드립니다.


PS.

일단 제가 생각하기로는
DECODE가 더 빠르다고 생각 합니다만
(ORACLE 내부 함수여서 ORACLE에서 최적화 시켰을 거란 막연한 추측
  + CASE보다는 단순한 비교 연산)

주위 분들은 CASE가 더 빠를거라고 합니다.
(표준 함수)
by 부쉬맨 [2014.01.28 16:59:07]
가독성의차이...
속도는 별의미가있나?

by 우리집아찌 [2014.01.28 17:30:27]
동감.. 속도 차이도 극히 미미할듯..

by 마농 [2014.01.28 18:18:48]
CASE 가 빠르다고 하더군요?
주워들은 얘기로 검증은 필요. 그러나 검증하고픈 의지가 없음.
단순 구문이라면 성능차를 인간의 감각으로 구별해내기는 어려울 듯.
하지만 복잡한 구문의 경우엔 달라질 수 있겠죠.
복잡한 여건을 Decode 로 작성하는 경우 한방에 안될 수 도 있죠.
  DECODE(aaa, 'a', DECODE(bbb, 'b', 1, 'c', 1, 0), 0)
그러나 Case 라면 한방에 가능합니다.
  CASE WHEN aaa = 'a' AND bbb IN ('b','c') THEN 1 ELSE 0 END

by 용근님 [2014.01.28 18:25:45]
머 조금 차이점이랄까

decode ( col, :a, '1', '2' )
case when col = :a then  '1' else '2' end

:a가 null이 들어올경우 결과 차이는 있을수 있겠네요..    

by 웬쑤 [2014.01.29 08:52:54]

답변을 주신 분 모두 감사합니다 ^^


by 아발란체 [2014.01.29 10:12:58]
전문 서적에서도 CASE가 빠르다고 되어 있습니다.
인용 하고 싶은데 내용이 이해 할 수 있는 정도로 깊지가 않네용.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입