PostgreSQL:部分一致检索的变通方法

PostgreSQL:部分一致检索的变通方法,第1张

概述众所周知,在PostgreSQL中部分一致和后方一致都是使用不了索引的。 后方一致可以把字段反转后定义一个函数索引来解决。 而部分一致就貌似没有办法了。 比如有一致user表。一般查询都是user关联一大堆其他的表。 如果条件是用户名部分一致,一般的写法是 AND user.user_name like '%输入的关键字%' 最近在调查一个性能问题的时候(user  inner join或者lef

众所周知,在Postgresql中部分一致和后方一致都是使用不了索引的。

后方一致可以把字段反转后定义一个函数索引来解决。


而部分一致就貌似没有办法了。

比如有一致user表。一般查询都是user关联一大堆其他的表。

如果条件是用户名部分一致,一般的写法是 AND user.user_name like '%输入的关键字%'

最近在调查一个性能问题的时候(user inner join或者left join一大堆其他表),发现加入AND user.user_name like '%输入的关键字%'条件后变慢很多。

本来想着没啥问题的,为什么变慢呢?

查看实行计划等想着还有其他办法来实现部分一致吗?

通过position函数可以替代like。例:AND position('输入的用户名关键字' in user.user_name) > 0

发现性能快了很多。查看实行计划发现表结合的顺序发生了变化。


这个地方并不是说AND position('输入的用户名关键字' in user.user_name) > 0的性能就一定比like好,而是需要具体问题具体分析。

提供一种like查询的变通方法

总结

以上是内存溢出为你收集整理的PostgreSQL:部分一致检索的变通方法全部内容,希望文章能够帮你解决PostgreSQL:部分一致检索的变通方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/1178937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存