복합 인덱스는 여러 개의 컬럼을 포함하는 인덱스입니다. 단일 컬럼 인덱스와는 달리, 복합 인덱스는 여러 컬럼에 대한 쿼리를 효율적으로 처리하는 데 도움이 됩니다.
복합 인덱스는 두 개 이상의 열을 포함할 수 있습니다. 복합 인덱스를 사용하는 쿼리는 인덱스의 첫 번째 컬럼부터 순차적으로 적용되며, 해당 컬럼에 대한 정렬을 수행합니다. 복합 인덱스에서 컬럼의 순서는 매우 중요합니다.
"컬럼의 순서는 카디널리티(cardinality)가 높은 것부터 낮은 순으로 나열하는 것이 좋습니다."
여기서 카디널리티는 특정 데이터 집합의 유니크한 값의 개수를 뜻합니다.
데이터의 중복도가 낮으면, 카디널리티가 높다고 표현합니다. 반면 데이터 중복도가 높으면, 카디널리티가 낮은 것입니다.
- 카디널리티가 낮은 컬럼 (데이터 중복도가 높은 컬럼)
- 카디널리티가 높은 컬럼 (데이터 중복도가 낮은 컬럼)
어떤 테이블에 name 컬럼과 age 컬럼이 있다면, name 컬럼이 age 컬럼에 비해 카디널리티가 높습니다. 같은 나이인 사람은 많지만, 이름이 같은 사람은 상대적으로 적기 때문입니다. 따라서, name 컬럼과 age 컬럼을 활용하여 복합 인덱스를 생성하려면, name, age 순으로 하는 게 좋습니다.
CREATE INDEX idx_name_age ON user (name, age);
참고자료
[1] https://itholic.github.io/database-cardinality/
[2] https://soft.plusblog.co.kr/87
'DB > SQL' 카테고리의 다른 글
[MySQL] FROM DUAL 이란? (0) | 2023.10.09 |
---|---|
[MySQL] JSON 필드 Null 체크하는 방법 (0) | 2023.09.27 |
[MySQL] 같지 않은 것을 조회할 때 사용할 수 있는 !=와 <> 연산자의 차이 (0) | 2023.09.23 |
[MySQL] DATETIME과 TIMESTAMP 자료형의 차이 (0) | 2023.07.04 |
[MySQL] root 비밀번호 수정 방법 (MySQL 8.0 버전) (2) | 2023.05.11 |
[PostgreSQL] user 테이블 조회 방법 (0) | 2023.03.16 |
[PostgreSQL] postgresql-client 설치 후 터미널에서 데이터베이스 접속 명령어 (0) | 2023.03.15 |
[MySQL] BEFORE 트리거로 잘못된 값 입력 방지하기 (0) | 2022.10.27 |