kingbase btree_gist 扩展插件使用

1 插件 btree_gist 简介

btree_gist 为以下数据类型提供了 B 树等价行为的 GIST 操作符类

uuid oid int2 int4 int8 float4 float8 timestamp timestamptz

time timetz date interval cash macaddr text bpchar bytea

numeric bit vbit inet cidr macaddr8 enum

一般情况下,这些操作符类不会比 B 树的表现更好,而且缺少 B 树最重要的特性之一支持唯一索引。但这些操 作符可以用于 GiST 测试或是作为其他 GiST 操作符类开发的参考。在特定情况下,例如查询同时涉及一列适合 GiST 索引的列和一列适合 B 树索引的列,这时创建 GiST 的两列联合索引可能比创建 GiST 索引和 B 树索引再通过位图 与扫描方式查询效率更高。

插件还提供了 B 树索引不支持的“<>”(不等于)操作符,这在创建 EXCLUDE 约束时很有用。插件对于可 以作为距离度量的数据类型提供了距离操作符 ,为使用这个操作符的最近邻搜索提供了 GiST 索引支持。

插件可 以被任何在当前库具有 CREATE 权限的用户创建。

• 插件名为 btree_gist

• 插件版本 V1.5

2 插件 btree_gist 加载方式

KingbaseES 默认不加载 btree_gist 插件,需要用户使用示例中的命令,人为手工加载。

示例:

CREATE EXTENSION btree_gist;

3 插件 btree_gist 的参数配置

无需配置任何参数

4 插件 btree_gist 的使用方法

示例如下:

CREATE TABLE test (a int4);

CREATE INDEX testidx ON test USING GIST (a);

SELECT * FROM test WHERE a < 10;

-- 最近邻搜索,找距离 42 最近的 10 行数据

SELECT *, a 42 AS dist FROM test ORDER BY a 42 LIMIT 10;

-- 使用 EXCLUDE 约束来创建规则一个动物园里的一个笼子只能装一种动物

CREATE TABLE zoo ( cage INTEGER, animal TEXT, EXCLUDE USING GIST (cage WITH =, animal WITH <>) );

INSERT INTO zoo VALUES(123, 'zebra');

INSERT INTO zoo VALUES(123, 'zebra');

INSERT INTO zoo VALUES(123, 'lion');

-- 预期违反约束报错

ERROR: conflicting key value violates exclusion constraint "zoo_cage_animal_excl"

DETAIL: Key (cage, animal)=(123, lion) conflicts with existing key (cage, animal)=(123, zebra).

=> INSERT INTO zoo VALUES(124, 'lion');

5 插件 btree_gist 卸载方法

btree_gist 插件的卸载也需要用户使用示例中的命令,人为手工卸载。

示例:

DROP EXTENSION btree_gist;

6 插件 btree_gist 升级方法

通过 ALTER EXTENSION 升级插件。

示例,升级到 1.1

ALTER EXTENSION btree_gist UPDATE TO '1.1';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值