bloom
bloom 索引-基于指纹的索引
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
bloom | 1.0 | FEAT | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2990 | bloom | 否 | 是 | 否 | 是 | 否 | 否 | - |
版本
| PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|
| 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
安装
提示:这是 PostgreSQL 内核自带的 contrib 扩展
SQL
用法
bloom 扩展提供基于布隆过滤器的索引访问方法。布隆过滤器是一种空间高效的数据结构,用于测试元素是否属于集合,可能出现假阳性但不会有假阴性。
布隆索引特别适用于有很多列的表,且查询会测试列的任意组合的场景。单个布隆索引可以替代多个 btree 索引,同时占用显著更少的空间。
创建布隆索引
SQL
使用自定义参数:
SQL
参数
| 参数 | 默认值 | 最大值 | 描述 |
|---|---|---|---|
length | 80 | 4096 | 每个签名的位长度(取最近的 16 的倍数) |
col1 - col32 | 2 | 4095 | 每个索引列生成的位数 |
运算符类支持
布隆索引仅支持等值运算符(=)。内置的运算符类适用于 int4 和 text。你可以为有哈希函数的其他类型定义自定义运算符类:
SQL
示例
SQL
限制
- 仅支持等值(
=)查询(不支持范围查询) - 不支持
UNIQUE索引 - 不支持搜索
NULL值 - 由于假阳性,结果需要回表复核