Lobsters | 原文链接 | 2026-09-03 收录

PostgreSQL 正则新武器实测:pg_tre 与 pg_re2

来源: depesz.com — 2026-08-25

概述

Depesz 在他 33GB、160 万行的 explain.depesz.com 执行计划库上,实测了 PostgreSQL 生态里两个新增的正则扩展。基准是用内置正则做全表扫描匹配字符串“sususu”,耗时约 40 秒。经典方案 pg_trgm 用 GIN 索引后只需约 1.6 秒,但建索引就要 16 分钟且占 1.7GB。pg_tre 号称“近似正则索引”,建索引却耗时 7 个多小时、占 21GB,且不支持 lookbehind 这类复杂断言,但内置了基于 Levenshtein 距离的模糊匹配,能先模糊召回再交给 trigram 精确过滤,形成很实用的两级方案。pg_re2 则基于 Google 的 RE2 库,不支持 lookbehind(为换速度而移除),建索引只要 15 分钟、占 2.9GB,简单正则查询约 0.96 秒,比 trigram 更快,复杂查询也几乎砍半耗时。作者总结这些新东西已初见成效,有些则更像对未来的许诺。

核心要点

金句

All things said – there is some interesting work related to regular expressions in PostgreSQL. Some of it already provides great results. Some of it looks more like a promise for a bright future.(PostgreSQL 正则方向确有一些有意思的工作——部分已经给出漂亮的成果,部分则更像是对光明未来的许诺。)
返回 Lobsters 首页