暂无图片
性能优化
我来答
分享
有问题吗?
2023-06-25
性能优化

在PG中,如下条件除了在es.docc上建表达式索引,还有其它办法进行加速查询吗?

substr(es.docc,0,length(es.docc)-2)= a.cno

数据案例:
docc : 134515681000

cno: 1345156810

es 表大概1000w数据

a 表大概600w数据


我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
广州_老虎刘

你的完整sql是什么?如果符合条件, 可以考虑再增加一个条件 es.docc like a.cno||'%' 

暂无图片 评论
暂无图片 有用 0
P
pgdba

可以将条件表达式改成模式匹配运算符 LIKE: es.docc LIKE a.cno || '__'

直接在 es.docc 字段上面创建索引即可,普通索引比表达式索引更通用。

优化器也会将B-tree索引用于涉及到模式匹配操作符LIKE~ 的查询,前提是如果模式是一个常量且被固定在字符串的开头—例如:col LIKE 'foo%'或者col ~ '^foo', 但在col LIKE '%bar'上则不会。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏