PostgreSQL 全文搜索与模式匹配:性能比较

主要观点:之前文章解释了 PostgreSQL 全文搜索(FTS)不适合实现通用查找功能,但其适合语义和语言感知搜索。在软件开发中需权衡,本文比较 FTS 和模式匹配的执行性能,在一定前提(权衡)下进行。
关键信息:

  • 预条件:对三个不同实体进行模式搜索,包括电信发票、发票对应的库存项目和订单等,可接受“以...开始”匹配,对发票号、库存号和订单号等字段进行搜索。
  • 性能分析:创建物化视图和索引,分别测试全文搜索、大小写敏感通配符模式搜索、大小写不敏感通配符模式搜索和大小写不敏感正则表达式搜索,得出不同搜索方式的结果和查询计划及执行时间,FTS 执行时间最短,大小写不敏感模式搜索时间最长。
    重要细节:
  • 物化视图 reunites 三个表的所有记录,包含 id、type、number 和 search_vector 等字段。
  • 不同搜索方式的关键信息如 Bitmap Index Scan、Seq Scan 等及各自的搜索时间。
  • 实验表明在可接受 FTS 局限性时,它值得考虑用于模式搜索,且其配置灵活性和执行速度在特定情况下更优。
    资源:
  • Pattern Searching and PostgreSQL Full-Text Search: Understanding the Mismatch
  • 图片取自罗马尼亚布加勒斯特的沉浸式展览。
阅读 6
0 条评论