人大金仓数据库KingbaseES 索引使用

关键字:

KingbaseES、索引

一、索引概述

1.1 索引是什么

如果我们想查阅书中的某个知识点,我们是会一页一页翻找还是在书中目录去找呢?我们会先在书的目录中找,然后在看对应页的内容,因为这样能够节省时间加快效率。而索引就是帮助存储系统快速获取信息的一种数据结构,形象的说就是数据的目录。

1.2 KES支持的索引类型

1,Btree索引,使用Btree结构来存储索引数据,可以处理等值查询和范围查询,还可用于查询结果集排序。

2,Hash索引,基于Hash表实现,只能用于等值查询。

3,GiST索引,一种平衡的树形结构访问方法,其适用于多维数据和集合数据类型。

4,SP-GiST索引,作为一种基础模板来实现多种搜索方法。

5,GIN索引,一般用其搜索全文或JSON键值。

6,BRIN索引,用于存储连续相邻的数据块统计信息,可减少索引占用空间。

1.3索引设计原则

创建索引会增加数据库系统开销,创建索引要注意以下几点:

1,经常用于查询的字段创建索引。

2,经常用于连接的字段创建索引。

3,经常需要根据范围来查询的列上创建索引。

4,经常更新的表要避免对其创建过多索引。

5,不应在数据量很少的表上创建索引。

6,不应再数据取值区分度很小的列上创建索引,如“性别”。

二、常用索引方法

1,多列索引,对于多列联合查询场景下,可以创建多列索引,Btree、GiST、GIN、BRIN支持创建多列索引

(1)创建多列索引

(2)查询条件where a=1 and b=2形式,查看执行生效情况

(3)查询条件where a=1形式,查看执行生效情况

(4)查询条件where b=2形式,查看执行生效情况(索引并未生效)

注意:在执行过程中查询优化器会通过计算全表扫描、使用可能用到的索引情况的开销成本,最后选择成本开销最小的情况,这就是为何有些情况并没有用到索引的原因。

2,唯一索引,唯一索引可以保证某个字段值是唯一的,也可以保证多个字段组合值是唯一的,允许有NULL值。对于表中有唯一性约束或主键约束的字段,KES会自动创建相应的唯一索引。

(1)唯一索引的创建

(2)查看执行生效情况

3,表达式索引,表达式索引可以使用一个函数或表达式的计算结果作为索引字段,被索引的函数或表达式要用圆括号括起来,其适用于查询速度远比插入更新速度要求高的场景。

(1)表达式索引的创建

(2)查看执行生效情况

三、值得注意的

在学习实践的过程当中,当我们创建一个表,并在表上创建索引后,通过输入查询命令查看索引执行生效情况,可能会发现并没有正常走索引查询数据,这是因为当前我们创建的表的数据量不够,查询优化器会认为不走索引的速度更快,故而选择最优选择,如果我们想验证创建的索引是否生效,可以将参数enable_seqscan的状态设置为off,把全表扫描关了,强制走索引,这时就可以验证我们创建的索引了。

四、总结

1、索引就是帮助数据库系统来快速访问特定信息的数据结构,可以把它看作数据的目录。

2、KES支持Btree索引、Hash索引、GiST索引、SP-GiST索引、GIN索引。

3、索引会增加数据库系统开销,并不是越多越好,需要合理规划。

4、常用索引方法包括多列索引、唯一索引和表达式索引。

5、验证创建的索引时需要注意enable_seqscan参数状态。

更多信息,参见https://help.kingbase.com.cn/v8/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值