DB/PostgreSQL

[PostgreSQL] PostgreSQL의 멀티 칼럼 인덱스에 대해서 알아보자. (Multicolumn Indexes)

빙기때침식곡 2022. 6. 30. 23:03
반응형

 

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

 

반응형