注册
达梦数据库中的各种索引
专栏/技术分享/ 文章详情 /

达梦数据库中的各种索引

Kirk 2023/07/25 10251 6 3
摘要

DM8中的索引有:聚簇索引、唯一索引、函数索引、位图索引、复合索引、全文索引、分区索引。

一、唯一索引

在创建表的时候,有主键和唯一约束,数据库就会自动创建唯一索引。

create unique index test.t1_ind on test.t1(id) tablespace IND;

二、函数索引

可以使用函数对索引列进行加密、格式化或者进行其他计算。创建函数索引的语法与创建普通索引的语法类似。可以使用CREATE INDEX语句来创建函数索引,并指定函数名称和需要进行处理的列。
CREATE INDEX func_index ON TEST.T2(function_name(column_name));

其中,TEST.T2是要创建索引的表名,function_name是要应用的函数名称,column_name是要处理的列名。通过使用函数索引,可以提高查询的效率和灵活性。

三、复合索引

复合索引是由表中的多列构成,需要注意一下先后顺序。复合索引的创建可以通过在CREATE INDEX语句中指定多个列名来实现。复合索引的作用是加快对表的查询,提高数据库的查询性能。在达梦数据库中,复合索引可以通过指定多个列来创建,以便在查询时能够更快地定位到符合条件的数据。复合索引可以提供更精确的查询结果,但也会占用更多的存储空间。因此,在创建复合索引时需要权衡查询性能和存储空间的需求。

create index test.t3_ind3 on test.t3(id,name) tablespace IND;

四、位图索引

位图索引用就是一个位来表示一个索引的键值,节省了存储空间。对于 and ,or 或=的查询条件,位图索引查询效率高,善于处理0,1 数据,适合 OLAP 环境,对于 OLTP 环境位图索引基本上不适用的。
CREATE BITMAP INDEX TEST.T4_IND ON TEST.T4(name);

五、全文索引

在达梦数据库中,可以通过执行同步数据来更新全文索引,否则无法通过全文索引查询到结果。可以使用manager工具将文本插入表中,并为相应的表建立全文索引。

CREATE CONTEXT INDEX cti_novles ON famous_novles (content) LEXER DEFAULT_LEXER。

全文索引必须在基表定义,而不能在系统表,视图,临时表,列存表,外部表上定义,同一个列只能创建一个全文索引,在创建全文索引的时候,用户可以为分词器定义分词参数,即控制分词器的数量。

六、分区索引(分区表)

分区表上创建的索引就是分区索引,非堆表每个分区一个索引(局部索引),堆表可以创建全局索引,也可以创建局部索引,在创建全局索引的时候指定 global 关键字。
创建水平分区表时,若表的PRIMARY KEY未包含所有分区列,系统会自动创建全局索引,否则自动创建局部索引。创建全局索引时,在水平分区表的主表创建全局索引,每个分区子表的数据都被索引在同一个 B 树中,并在每个子表创建全局本地索引,与主表共用一个 B 树。

create index "IND_test" on "TEST"."t5"("ID") storage(initial 1,next 1,minextents 1,on "IND");
create index "IND_test2" on "TEST"."t5"("ID") global storage(initial 1,next 1,minextents 1,on "IND");
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服