PostgreSQL `pg_trgm` 扩展实现高效模糊查询实践

在文本搜索或模糊匹配场景中,很多人第一反应是用 LIKE '%关键字%',但这种方式在数据量大时性能极差。
其实 PostgreSQL 自带了一个被低估的强大扩展 —— pg_trgm,可以让模糊匹配性能飞跃式提升 🚀。


🧠 一、pg_trgm 是什么?

pg_trgm(Trigram Matching)通过将字符串拆分为三元组(trigram),再基于相似度计算进行匹配。

举个例子:
字符串 "postgres" 被拆成以下 trigram:

"  p", " po", "pos", "ost", "stg", "tgr", "gre", "res", "es "

每个 trigram 都是连续的 3 个字符。
PostgreSQL 会在索引中存储这些 trigram,从而实现近似匹配、模糊搜索、相似度排序等高级能力。


🧩 二、启用 pg_trgm 扩展

在数据库中执行以下命令启用扩展:

CREATE EXTENSION IF NOT EXISTS pg_trgm;

⚙️ 三、创建测试表与数据

我们先创建一个简单的用户表,并插入一些中文数据:

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name TEXT
);

INSERT INTO users (name) VALUES
('张三'),
('李四'
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@井九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值