본문 바로가기

공부/SQL

[liveSQL] 인덱스, 정렬 작업 대체 가능

1. 정렬 작업 대체 가능

* 인덱스를 이용해 대체하기 위해서는 인덱스 컬럼 구성과 똑같은 order by 절에 기술해야함.(후행 컬럼은 누락 가능)

~ 단, 인덱스 구성 컬럼이 조건절에서 '='연산자로 비교된다면

  1. ordery by절에서 누락가능,
  2. 인덱스와 다른 순서로 ordery by절 내 기술 가능

 

2. 확인

  • compoite index : [ c1, c2 ]

 

2.1 선행컬럼이 order by에 인덱스 순서와 동일한 경우 -> 소트 연산 대체 가능

(1) [ 소트 연산 대체 ] WHERE c1 = AND c2 <  ORDER BY c1, c2

sort order by가 실행계획에서 나타나지 않음.

 

 

(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. 참고

https://github.com/snrndi121/SQL_CODE_STUDY/blob/master/index/index.md#1%EC%A0%95%EB%A0%AC-%EC%97%B0%EC%82%B0-%EB%8C%80%EC%B2%B4-%EA%B0%80%EB%8A%A5%ED%95%9C-%EA%B2%BD%EC%9A%B0

 

snrndi121/SQL_CODE_STUDY

based Oracle. Contribute to snrndi121/SQL_CODE_STUDY development by creating an account on GitHub.

github.com