表达式索引:根据业务特点及场景去建立
例1:
比如说,密码存储的是md5(id || username)的值,就可以这么建立索引:
select id from user where passwd = md5(id || username);
这个时候我们就可以建立索引去加快查询:
create index on user(md5(id || username));
例2:
我们前缀匹配字符串 123456;
select name from user where name like '123456%';
则可以这建立索引:
create index on user( name varchar_pattern_ops);
例3:
我们后缀匹配字符串 123456;
select name from user where name like '%123456';
则可以建立索引:
create index on user( reverse(name) varchar_pattern_ops);
例4:
忽略大小写匹配一个指定的值:
select * from user WHERE lower(name) = 'value';
则可以建立索引:
create index on user(lower(name));
创建完成后执行一下原sql, 比较一下前后执行时间;
或者利用explain analyze 查看一下执行计划又没有使用到新建的索引。