prefix

前缀树数据类型

概览

扩展包名版本分类许可证语言
pg_prefix1.2.10TYPEPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
3500prefix-
相关扩展semver ltree citext pg_trgm unit pgpdf pglite_fusion md5hash

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG1.2.101817161514pg_prefix-
RPMPGDG1.2.101817161514prefix_$v-
DEBPGDG1.2.101817161514postgresql-$v-prefix-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
d12.aarch64
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
d13.x86_64
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
d13.aarch64
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
PGDG 1.2.10
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64

构建

您可以使用 pig build 命令构建 pg_prefix 扩展的 RPM 包:

pig build pkg pg_prefix         # 构建 RPM 包

安装

您可以直接安装 pg_prefix 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_prefix;          # 当前活跃 PG 版本安装
pig ext install -y pg_prefix -v 18  # PG 18
pig ext install -y pg_prefix -v 17  # PG 17
pig ext install -y pg_prefix -v 16  # PG 16
pig ext install -y pg_prefix -v 15  # PG 15
pig ext install -y pg_prefix -v 14  # PG 14
dnf install -y prefix_18       # PG 18
dnf install -y prefix_17       # PG 17
dnf install -y prefix_16       # PG 16
dnf install -y prefix_15       # PG 15
dnf install -y prefix_14       # PG 14
apt install -y postgresql-18-prefix   # PG 18
apt install -y postgresql-17-prefix   # PG 17
apt install -y postgresql-16-prefix   # PG 16
apt install -y postgresql-15-prefix   # PG 15
apt install -y postgresql-14-prefix   # PG 14

创建扩展

CREATE EXTENSION prefix;

用法

prefix: 用于电话号码路由的前缀范围类型

prefix 扩展提供了 prefix_range 数据类型,用于高效的前缀匹配,尤其适用于电话呼叫路由场景。

数据类型

使用构造函数或文本转换创建 prefix_range 值:

CREATE EXTENSION prefix;

SELECT prefix_range('123');           -- 123
SELECT prefix_range('123', '4', '5'); -- 123[4-5]
SELECT '123'::prefix_range;           -- 123

运算符

运算符说明
@>包含(前缀包含值)
<@被包含于
&&重叠
|并集
&交集
=, <>, <, >, <=, >=比较

示例

-- 查找电话号码的最长匹配前缀
SELECT * FROM prefixes
WHERE prefix @> '0123456789'
ORDER BY length(prefix) DESC
LIMIT 1;

-- 包含检查
SELECT '123'::prefix_range @> '123456';     -- true

-- 交集
SELECT '123[4-5]' & '123[2-7]';            -- 123[4-5]

-- 并集
SELECT '123' | '124';                       -- 12[3-4]

索引支持

创建 GiST 索引以实现高效的前缀查找:

CREATE INDEX idx_prefix ON prefixes USING gist(prefix);

该索引可加速 @><@&&= 运算符。


最后修改 2026-03-14: update extension metadata (953cbd0)