prefix
前缀树数据类型
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_prefix | 1.2.10 | TYPE | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3500 | prefix | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | semver ltree citext pg_trgm unit pgpdf pglite_fusion md5hash |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 1.2.10 | 1817161514 | pg_prefix | - |
| RPM | PGDG | 1.2.10 | 1817161514 | prefix_$v | - |
| DEB | PGDG | 1.2.10 | 1817161514 | postgresql-$v-prefix | - |
构建
您可以使用 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_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);
该索引可加速 @>、<@、&& 和 = 运算符。