칼럼의 값을 변형해서 만든 값에 대해 인덱스를 만들어야 할 때가 있는데 이 때 함수 기반 인덱스를 활용할 수 있다.
CREATE TABLE USER (
user_id BIGINT,
first_name VARCHAR(10)
last_name VARCHAR(10)
PRIMARY KEY (user_id)
);
first_name
과 last_name
을 합쳐서 풀 네임으로 검색해야 하는 요구 사항이 추가되었다.full_name
이라는 칼럼을 실제로 추가하고 이 칼럼에 인덱스를 생성 ALTER TABLE user
ADD full_name VARCHAR(30) AS (CONCAT(first_name, ' ', last_name)) VIRTUAL,
ADD INDEX ix_fillname (full_name);
CREATE TABLE user(
...
...
INDEX ix_fullname ((CONCAT(first_name, ' ', last_name)))
);
WHERE
조건절에 사용된 표현식이 그대로 사용돼야 인덱스를 태울 수 있다.SELECT * FROM user WHERE CONCAT(first_name, ' ', last_name)='Matt Lee';