Oracle

Oracle에서 GROUP BY절의 자동정렬에 대해서

Code Bomber 2021. 2. 18.

Oracle 10g R2버전 이전까지는 GROUP BY절을 사용하면 자동으로 정렬된다는 것을 구버전을 사용하다 보니 알게 되었다. 그 이후 버전 부터는 자동정렬이 되지않는데 정렬 알고리즘이 변경되어서 그렇다고 한다.

많은 양의 데이터가 정렬될 경우 기존의 정렬보다 월등한 성능을 낸다고 한다.


바뀐 정렬 알고리즘을 사용하지않고 자동정렬을 사용하고 싶을 경우

3가지 중 한가지 방법을 사용하면 된다.


1. Optimizer Mode를 Rule일 경우 발생 안함
2. OPTIMIZER_FEATURES_ENABLE를 10.1로 함
3. init.ora "-gby_hash_aggregation_enabled"="FALSE 로 변경함


하지만 새로운 알고리즘을 버리고 구 버전의 정렬기능을 사용해야할 이유가 있을까?

 

GROUP BY절과 ORDER BY를 같이 서술하면 2번 정렬하기 때문에 비효율적이라고 생각했다.

하지만 테스트해보니 GROUP BY, ORDER BY를 같이 서술해줘도 정렬을 한번만 발생하였다.

그래서 굳이 새로운 정렬기능을 OFF시킬 필요는 없을 것 같다.

그리고 자동으로 정렬해주더라도 ORDER BY를 서술해준다면 구버전에서 업그레이드 하여도

정렬이 안될 수 있는 오류를 피할 수 있는 장점도 있다.

'Oracle' 카테고리의 다른 글

DECODE와 CASE의 차이  (0) 2021.02.18
Oracle 쿼리로 달력 만들기  (0) 2021.02.16
Oracle에서 '(홑따옴표)와 "(쌍따옴표)의 차이  (0) 2021.02.16

댓글