达梦数据库DM8-索引的简单介绍和维护使用

系列文章目录

第11章 达梦数据库DM8-索引的简单介绍和维护使用

这里再放一个达梦云适配中心链接,里面的文档模块有很多官方教程,社区模块也可以查询或者提出各类使用问题
达梦云适配中心


本文环境

系统环境:
windows 7 sp1

软件镜像:
dm8_20201112_x86_rh7_64_ent_8.1.1.144.iso

1、数据库索引简单介绍

索引:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
索引作用:加快查询速度,对更新少量数据可以提高更新速度,延迟插入。数据库自动维护索引,增加数据库性能消耗,且索引会占用存储空间。

达梦支持的索引

  1. 聚集索引:每一个普通表有且只有一个聚集索引;
  2. 唯一索引:索引数据根据索引键唯一;
  3. 函数索引:包含函数/表达式的预先计算的值;
  4. 位图索引:对低基数的列创建位图索引;
  5. 位图连接索引:针对两个或者多个表连接的位图索引,主要用于数据仓库中;
  6. 全文索引:在表的文本列上而建的索引。

2、索引的适用场景和不适用场景

适用场景:

  1. SQL语句中Where 条件出现的列
  2. 多表连接查询中,连接条件列
  3. 查询结果返回少量或者小部分数据
  4. 达梦数据库中CLOB 和 TEXT 只能建立全文索引、BLOB 不能建立任何索引。

不适用场景:

  1. 查询结果返回大量的数据或者是全部数据
  2. 列上有大量的重复值
  3. 列上有大量的null
  4. 小表表中数据量不大则不需要索引(比如几千条数据量或者更少)

3、达梦数据库索引的创建

3.1 使用图形化工具DM管理工具创建

打开DM管理工具,例如我们要做CESHI模式下的TTT表ID列新建索引。
展开CESHI模式,表TTT,找到索引项,右键新建索引
在这里插入图片描述
选择ID列到右侧窗口,输入索引名称,再选择项选择存储,第一项选择CESHI模式的表空间用于存储索引,最后点击确定,默认建立的是B树索引,二级索引。
在这里插入图片描述
在这里插入图片描述
成功后,刷新索引项,可以看到刚刚创建的索引信息,右键选择可以继续对其进行修改。
在这里插入图片描述

3.2 使用SQL语句创建

同样的索引我们还可以使用SQL语句创建

create index "ID_INDEX" on "CESHI"."TTT"("ID") storage(initial 1,next 1,minextents 1);

在这里插入图片描述

4、索引维护

4.1 索引查询

  1. 可以通过DM管理工具,直接到模式的对应表下,索引项查看
  2. 使用语句查询Select * from dba_indexes

4.1 索引重建

大表通过长时间的增删改查使用,数据库对应索引的开销已经非常大了。一般以下两个场景可以考虑索引的重建
1、对某个表发现查询效果下降,索引失效
2、表数据大幅度删除(20%以上)
例如我们对TTT表的ID_INDEX索引进行重建,可以使用如下语句

alter INDEX TTT.ID_INDEX REBUILD;

也可以通过DM管理工具对索引进行重建
在这里插入图片描述

4.2 索引删除

一个表的索引越多时,对该表进行修改时所需要的花销就越大,所以对一个表中的索引数要慎重考虑。必要时删除效果不佳的索引可能有助于提升性能。
例如我们对TTT表的ID_INDEX索引进行删除,可以使用如下语句

drop INDEX TTT.ID_INDEX ;

也可以通过DM管理工具,找到该索引后,右键删除。

5、达梦数据库聚集索引

5.1 达梦数据库聚集索引介绍

DM8 中表(列存储表和堆表除外)都是使用 B+树索引结构管理的,每一个普通表都有且仅有一个聚集索引,数据都通过聚集索引键排序,根据聚集索引键可以快速查询任何记录。
当建表语句未指定聚集索引键时,DM8的默认聚集索引键是 ROWID。若指定索引键,表中数据都会根据指定索引键排序。建表后,DM8 也可以用创建新聚集索引的方式来重建表数据,并按新的聚集索引排序。
但是新建聚集索引会重建这个表以及其所有索引,包括二级索引、函数索引,是一个代价非常大的操作。因此,最好在建表时就确定聚集索引键,或在表中数据比较少时新建聚集索引,而尽量不要对数据量非常大的表建立聚集索引。
(来源:DM8系统管理员手册.pdf)

5.2 达梦数据库聚集索引创建

创建聚集索引的约束条件:

  1. 每张表中只允许有一个聚集索引,如果之前已经指定过 CLUSTER INDEX 或者指定了 CLUSTER PK,则用户新建立 CLUSTER INDEX 时系统会自动删除原先的聚集索引。但如果新建聚集索引时指定的创建方式(列,顺序)和之前的聚集索引一样,则会报错;
  2. 指定 CLUSTER INDEX 操作需要重建表上的所有索引,包括 PK 索引;
  3. 删除聚集索引时,缺省以 ROWID 排序,自动重建所有索引;
  4. 若聚集索引是默认的 ROWID 索引,不允许删除;
  5. 聚集索引不能应用到函数索引中;
  6. 不能在列存储表上新建/删除聚集索引;
  7. 建聚集索引语句不能含有 partition_clause 子句;
  8. 在临时表上增删索引会使当前会话上临时 b 树数据丢失。

DM 提供三种方式供用户指定聚集索引键:

  1. CLUSTER PRIMARY KEY:指定列为聚集索引键,并同时指定为主键,称为聚簇主键;
  2. CLUSTER KEY:指定列为聚集索引键,但是是非唯一的;
  3. CLUSTER UNIQUE KEY:指定列为聚集索引键,并且是唯一的。

例如,创建 TEST_T 表,指定 ID为聚簇主键。

CREATE TABLE "CESHI"."TEST_T"
(
"ID" INTEGER NOT NULL ,
"DD" VARCHAR(50),
"CITY" VARCHAR(50),
CLUSTER PRIMARY KEY("ID")) STORAGE(ON "CESHI", CLUSTERBTR) ;

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值