PostgreSQL中varchar类型like前置%查询命中索引的方法
条评论上一篇中,我们学习了PostgreSQL中想要让varchar类型支持like查询能够命中索引,需要注意的地方。但是即便是创建索引时,指定了操作符类varchar_pattern_ops,在使用like查询的时候,还是只能保证sometext%这种查询能够命中索引,但是%sometext这种是无能为力的,见下图。

所以如果需要支持%sometext方式的索引查询,还需要再做点工作:
create extension pg_trgm;
CREATE INDEX log_action_v_uri_index ON log_action using gist (v_uri gist_trgm_ops);
1. 上面`gist`索引时有损的,后来研究支持,发现`gin`更合适,速度更快 **强烈推荐**
CREATE INDEX table_name_md5_index ON table_name using gin (md5 gin_trgm_ops);
|
CREATE INDEX table_name_md5_index_btree ON table_name (md5 text_pattern_ops);
但是此方案只支持`左锚定`
* 如果需要不局限于`左锚定`的模糊查询,还需要这么来
create extension pg_trgm;
CREATE INDEX table_name_md5_index ON table_name using gin (md5 gin_trgm_ops);
```
- 如果还需要精确等值查询,请务必保留
btree索引
本文标题:PostgreSQL中varchar类型like前置%查询命中索引的方法
文章作者:牧云踏歌
发布时间:2018-08-02
最后更新:2018-08-03
原始链接:https://blog.ximatai.net/2018/08/02/PostgreSQL_select_varchar_like_front_/
版权声明:本博客文章均系本人原创,转载请注名出处