백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.
1. 함수 기반 인덱스
- 칼럼의 값을 변형해서 만들어진 값에 대해 구축된 인덱스
- 계산 과정의 차이만 있을 뿐 내부 구조 및 유지관리 방법은 B-Tree 인덱스와 동일
가상 칼럼을 이용한 구현
- 현재 존재하는 컬럼을 사용하여 가상 컬럼 및 인덱스 생성 가능
- 단, 테이블의 구조가 변경됨
ALTER TABLE user
ADD full_name VARCHAR(30) AS (CONCAT(first_name, ' ', last_name)) VIRTUAL,
ADD INDEX ix_fullname (full_name);
함수를 이용한 구현
- 함수를 직접사용하는 인덱스
- 테이블의 구조를 변경하지 않음
CREATE TABLE user (
first_name VARCHAR(10),
last_name VARCHAR(10),
INDEX ix_fullname ((CONCAT(first_name, ' ', last_name)))
)
조회
SELECT * FROM user WHERE CONCAT(first_name, ' ', last_name) = 'Lee';
- 반드시 조건절에 함수 기반 인덱스에 명시된 표현식이 그대로 사용되어야 함
'Database > Mysql' 카테고리의 다른 글
[Real MySQL] 8-1. 인덱스: Disk (0) | 2024.09.07 |
---|---|
[Real MySQL] 8-7. 인덱스: 멀티 밸류 인덱스 (0) | 2024.09.07 |
[Real MySQL] 8-8. 인덱스: 클러스터링 인덱스 (0) | 2024.09.07 |
[Real MySQL] 8-9. 인덱스: 유니크 인덱스 (0) | 2024.09.07 |
[Real MySQL] 5-2. 트랜잭션과 잠금: 격리 수준 (0) | 2024.08.10 |