728x90
※ MySQL: Prefix index.
안녕하세요. 듀스트림입니다.
오늘 포스팅은 MySQL 인덱스 기법 중 하나인 프리픽스 인덱스에 관련된 내용입니다.
(PostgreSQL은 Expression index로 구현 가능합니다.)
PostgreSQL: 표현식 인덱스
※ PostgreSQL: Indexes on Expressions. 안녕하세요. 듀스트림입니다. 오늘은 표현식(Expressions) 인덱스에 대해 알아보겠습니다. 11.7. Indexes on Expressions11.7. Indexes on Expressions # An index column need not be just a c
dewstream.tistory.com
1. Prefix index?
프리픽스 인덱스는 데이터베이스에서 문자열 컬럼의 앞부분만 잘라서 인덱스에 저장하는 기법을 말합니다.
긴 문자열 전체를 인덱싱하면 인덱스 크기가 커지고, 디스크 사용량과 성능에 부담이 생기기 때문에 접두어 일부만 인덱싱하여 이를 방지합니다.
- 장점:
- 인덱스 크기 감소 → 디크스 효율 향상
- 문자열이 긴 컬럼에서도 빠른 검색 가능
- 주의점:
- 접두어가 동일한 값이 많으면 선택성(low cardinality) 감소 → 인덱스 효율 저하
- 전체 문자열 검색이나 LIKE '%abc' 패턴 검색에는 활용 불가
- 예시
-- 이메일 컬럼의 앞 10자만 인덱스
CREATE INDEX idx_email_prefix10 ON users(email(10));
2. PostgreSQL에서 구현 방법
▸ 표현식 인덱스로 프리픽스 인덱싱 구현
-- Expression index로 email 앞 10글자만 인덱스
CREATE INDEX idx_email_prefix10 ON users (left(email, 10));
▸ LIKE 'abc%' 패턴 검색까지 최적화 하려면 아래 오퍼레이터 클래스 인덱스 추가 생성
-- 문자열 컬럼 최적화 text_pattern_ops 인덱스 생성
CREATE INDEX idx_email_like ON users (email text_pattern_ops);
오늘은 여기까지~
728x90
'MySQL' 카테고리의 다른 글
| MySQL: 메모리 파라미터 (3) | 2025.08.26 |
|---|---|
| MySQL: CHARACTER SET, COLLATE 설정 (4) | 2025.08.25 |
| MySQL: Lock (3) | 2025.07.29 |
| MySQL: InnoDB Cluster 고가용성 구성 (3) | 2025.07.25 |
| MySQL: RHEL 기반 Linux에 MySQL 설치 방법 (0) | 2025.06.20 |