示例
示例
CREATE INDEX idx_users_lower_email ON users (lower(email));
-- 命中:表达式与索引一致
SELECT * FROM users WHERE lower(email) = 'a@x.com';
-- 不命中:查询端表达式不一致
SELECT * FROM users WHERE trim(lower(email)) = 'a@x.com';| 要求 | 索引表达式必须是 IMMUTABLE;now()、random() 这类稳定或不稳定函数不能用于索引 |
|---|---|
| 命中条件 | 查询里的表达式要与索引表达式一致(函数、顺序、大小写都算) |
| 对比 MySQL | MySQL 8.0.13+ 的功能索引思路相同,表达式需括号包裹 |