An index can be defined on more than one column of a table.
인덱스는 테이블의 1개 이상의 컬럼에서 정의될 수 있다.
CREATE TABLE test2(
major int,
minor int,
name varchar
);
SELECT name FROM test2 WHERE major = constant AND minor = constant;
CREATE INDEX test2_mm_idx ON test2 (major, minor);
위의 예시와 같이 한 테이블에서 2개의 컬럼에서 인덱스 정의가 가능하다.
특징으로는 선언되는 순서가 매우 중요하다.
인덱스의 두 번째 컬럼은 첫 번째 컬럼에 의존해서 정렬되어 있는데
우선 그림으로 확인해보자.
dept_no, emp_no 순서대로 인덱스를 선언했다고 하면
우선 dept_no으로 한 번 거르고 그 다음 emp_no를 탐색한다.
그렇기 때문에 컬럼 순서를 신중히 고려해야 하고,
우선 많이 거를 수 있는 컬럼을 앞에 써야한다.
특징
- WHERE 에 dept_no와 emp_no 조건을 걸어 SELECT하면 인덱스가 걸린다.
- WHERE 에 dept_no만 조건을 걸어 SELECT하면 인덱스가 걸린다.
- WHERE 조건에 emp_no만 조건을 걸면 인덱스가 안걸린다.
- dept_no와 emp_no를 동시에 조건을 걸어야 하는 SELECT만 있을 때 사용하기 좋다.
- 각각을 따로 조건으로 걸어야 하는 SELECT에는 multicolumn index보다 단일 인덱스를 각각 거는게 낫다.
마무리
Multicolumn indexes should be used sparingly.
In most situations, an index on a single column is sufficient and saves space and time.
멀리칼럼 인덱스는 조금만 쓰자.
대부분의 경우, 단일 컬럼 인덱스로 충분하고 공간과 시간을 절약할 수 있다.
공식 문서님께서, 많이 쓸일이 없다고 하신다...
이런게 있다고 알아두고 있다가, 언젠가 필요할 때 꺼내 써보자.
REFERENCES
PostgreSQL : Documentation: 13: PostgreSQL 13.7 Documentation
postgrespro.com
'DB > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] View Table(뷰 테이블)에 대해서 알아보자. (0) | 2022.11.11 |
---|---|
[PostgreSQL] PostgreSQL의 유니크 인덱스에 대해서 알아보자. (Unique Index) (0) | 2022.06.30 |
[PostgreSQL] PostgreSQL의 GiST, SP-GiST Index에 대해서 알아보자. (0) | 2022.06.19 |
[PostgreSQL] PostgreSQL의 Geometric Type에 대해서 알아보자. (0) | 2022.06.19 |
[PostgreSQL] PostgreSQL의 B-tree, Hash Index에 대해서 알아보자. (0) | 2022.06.19 |