1. 정렬 작업 대체 가능
* 인덱스를 이용해 대체하기 위해서는 인덱스 컬럼 구성과 똑같은 order by 절에 기술해야함.(후행 컬럼은 누락 가능)
~ 단, 인덱스 구성 컬럼이 조건절에서 '='연산자로 비교된다면
- ordery by절에서 누락가능,
- 인덱스와 다른 순서로 ordery by절 내 기술 가능
2. 확인
-
compoite index : [ c1, c2 ]
2.1 선행컬럼이 order by에 인덱스 순서와 동일한 경우 -> 소트 연산 대체 가능
(1) [ 소트 연산 대체 ] WHERE c1 = AND c2 < ORDER BY c1, c2
(2) [ 소트 연산 대체 ] WHERE c1 < ORDER BY c1
2.2 선행컬럼이 order by에 인덱스 순서와 다른 경우 -> 대체 여부는 경우에 따라 다름.
(1) [ 소트 연산 대체 ] WHERE c1 = AND c2 < ORDER BY c2, c1
(2) [ 소트 연산 대체 불가 ] WHERE c1 < ORDER BY c2
(3) [ 소트 연산 대체 ] WHERE c1 = ORDER BY c2 : 선행컬럼이 '=' 연산자 만나서 order by에서 누락가능
(4) [ 소트 연산 대체 불가] WHERE C2 = ORDER BY C1
?
3. 대체 가능?
- SELECT * FROM A WHERE COL1 = 100 ORDER BY C2
- SELECT * FROM A WHERE COL1 = 100 ORDER BY C2,C1
- SELECT * FROM A WHERE COL1 = 100 ORDER BY C1,C2
-
모두 같은 표현.
4. 참고
'공부 > SQL' 카테고리의 다른 글
집고 넘어갈 것 (0) | 2020.06.05 |
---|---|
[liveSQL] 윈도우 함수 사용 사례(1) (0) | 2020.03.05 |
[liveSQL] 조인 - 외부 조인, 3가지 표현 방법 (0) | 2020.02.27 |
[liveSQL] 조인 - Hash Semi 조인, 조건문에 따른 실행계획 차이 (0) | 2020.02.27 |
[liveSQL] 쿼리 변환, 서브쿼리 Unnesting(2) (0) | 2020.02.27 |