본문 바로가기
Oracle(DB관련)

oracle10g R2 group by / order by

by xfree302 2017. 7. 31.
반응형

oracle10g R2 group by / order by 


oracle10g R2 부터 group by 시 자동정렬되지 않는다.

Oracle 8i Database : Character Sort GROUP BY

Oracle 9i Database : Binary Sort GROUP BY

Oracle 10g Database : Hash based GROUP BY


개선효과: 

메모리 충분할때(in memory sort) 효과적

높은 cardinality(row distinct가 많은 경우) 특히 효과적

faster CPU 더욱 효과적

적은 column 조회시 특히 효과적



이전 버전의 group by 시 자동정렬 기능을 유지하려면

1. Optimizer Mode를 Rule로 사용
2. OPTIMIZER_FEATURES_ENABLE을 10.1로 사용
3. init.ora 
   "-gby_hash_aggregation_enabled"=FALSE 로 변경

   alter system set "_GBY_HASH_AGGREGATION_ENABLED"=false;

   alter session set "_GBY_HASH_AGGREGATION_ENABLED"=false;


3번 주로 사용하나, 파라미터 변경을 권장하지 않고 정렬이 필요하면 프로그램에서 order by 를 추가해야 한다.



query 변경 방법

1. order by 표기

select deptno, count(*), avg(sal)

from emp

group by deptno

order by detpno



2. OPT_PARAM 힌트

select /*+ OPT_PARAM('_gby_hash_aggregation_enabled=false') */ 

deptno, count(*), avg(sal)

from emp

group by deptno



3. 힌트 

select /*+ NO_USE_HASH_AGGREGATION */ 

deptno, count(*), avg(sal)

from emp

group by deptno




반응형

'Oracle(DB관련)' 카테고리의 다른 글

oracle index  (1) 2017.09.15
oracle spool  (0) 2017.09.05
오라클 10g 함수  (0) 2017.07.31
Oracle TABLE 정보관련 및 VIEW  (0) 2017.07.17
ORACLE SCHEDULER  (0) 2017.07.13