Database/Mysql
[Real MySQL] 8-6. 인덱스: 함수 기반 인덱스
noahkim_
2024. 9. 7. 12:31
백은빈, 이성욱 님의 "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';
- 반드시 조건절에 함수 기반 인덱스에 명시된 표현식이 그대로 사용되어야 함