绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
用Postgresql 特异功能解决其他数据库难以解决的问题
2019-03-18 17:01:20

PostgreSQL 数据库有很多别的数据库没有的特异功能,在学习的过程中,有些SQL 的写法也彻底打翻了传统DBA 在撰写语句的规则,下面有一些问题,是其他关系型数据库不好解决的问题。我们看看 POSTGRESQL 怎么轻松化解。


例如 案例,我们在数据库中有一些是comments 注释,或客户回馈的字段,例如我们想在客户的回馈中,找到客户不满意的评论,我们总不能一条条的看吧,如果传统的老三样数据库 估计只能写成  like ‘%不满意%’,之类的进行查询,而这样的查询数据量少好说,数据量如果有个几十万,上百万,估计就乐不起来了。


PG 通过特殊的方式来进行化解,我们看看怎么来做这样的事情


1 我们先建立几条测试数据,为了便捷这里就用字母来代替客户的注入的信息



2 下面我们通过PG特殊的查询包含aaa的记录


通过两个函数 phrasetto_tsquery 和 to_tsvector 来解决,我们可以看到数据库很轻松的就查询到字段中,包含aaa 的记录


3 我们继续提高难度,这边我们要查找内容中包含 ccc 和 eedb的数据

这个难度的查询估计是 ORACLE , SQL SERVER , MYSQL 都要肌无力了,有人说 FULLTEXT,我对此不发表看法。 Postgresql 可以继续不用FULLTEXT 来解决上面的问题




4  估计这时候有人说,既然POSTGRESQL 这么牛逼,那就再提高难度吧


我需要在字段中找到既包含 aerd的 或者也包含  eedb的, 如果要用传统的SQL 写大致是这个样子


select test from test where test like '%aerd%' or test like 'aerd% or test like '%aerd' or test like '%eedb%' or test like 'eedb%' or test like '%eedb' 

这个SQL OK 不OK 估计不用 DBA 说,开发已经彻底的开骂了 ,什么玩意?  性能那也一定是差到天边去了,为什么 地球人都知道 !!


看看 POSTGRESQL 怎么解决, So easy 

这个数据库,不服不行,其他数据库在字符处理中的都的靠边站, 靠边站。


其实POSTGRESQL 对字符的处理上面的仅仅是其默认功能中,6%不到。 


还有一些我们会用到的,例如两个大字符串是否包含,也是用特殊的操作符来进行操作,这里就不讲了(太困了),这些都是那堆数据库目前所不能做的,而我所提到的功能

是POSTGRESQL 9.6 就拥有的(2016年就有的,如果我没有记错),那堆付费的数据库,你们的费用收的合理不合理心里应该有点数了吧,马上 POSTGRESQL 要到12 version ,所以这个数据库有多大潜力,目前看是无底洞。


分享好友

分享这个小栈给你的朋友们,一起进步吧。

数据库杂货铺
创建时间:2021-12-10 09:57:47
分享数据库管理,运维,源代码 ,业界感受, 吐槽
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • liuaustin
    栈主

小栈成员

查看更多
  • miemieMIA
  • 578154454
  • ylfxml
戳我,来吐槽~