DM8_SQL语言(四)达梦数据库数据定义语句三:管理索引

在这里插入图片描述
一、管理索引

1.索引定义语句

为了提高系统的查询效率,DM 系统提供了索引。但也需要注意,索引会降低那些影响 索引列值的命令的执行效率,如 INSERT、UPDATE、DELETE 的性能,因为 DM 不但要维护 基表数据还要维护索引数据。
语法格式

CREATE [OR REPLACE] [CLUSTER|NOT PARTIAL][UNIQUE | BITMAP| SPATIAL] INDEX <索引名>
ON [<模式名>.]<表名>(<索引列定义>{
   ,<索引列定义>}) [GLOBAL] [<STORAGE 子句>] [NOSORT] [ONLINE] [REVERSE];
<索引列定义>::= <索引列表达式>[ASC|DESC]
<STORAGE 子句>::=<STORAGE 子句 1>|<STORAGE 子句 2>
<STORAGE 子句 1>::= STORAGE(<STORAGE1> {
   ,<STORAGE1>})
<STORAGE1> ::=
[INITIAL <初始簇数目>] | [NEXT <下次分配簇数目>] | [MINEXTENTS <最小保留簇数目>] | [ON <表空间名>] |
[FILLFACTOR <填充比例>]|
[BRANCH <BRANCH>]|
[BRANCH (<BRANCH>, <NOBRANCH>)]|
[NOBRANCH ]|
[<CLUSTERBTR>]|
[SECTION (<区数>)]|
[STAT NONE]
<STORAGE 子句 2>::= STORAGE(<STORAGE2> {
   ,<STORAGE2>})
<STORAGE2> ::= [ON <表空间名>]|[STAT NONE]

参数

1. UNIQUE	指明该索引为唯一索引;
2. BITMAP	指明该索引为位图索引;
3. SPATIAL 指明该索引为空间索引;
4. CLUSTER	指明该索引为聚簇索引(也叫聚集索引),不能应用到函数索引中;
5. NOT PARTIAL 指明该索引为非聚簇索引,缺省即为非聚簇索引;
6. <索引名>	指明被创建索引的名称,索引名称最大长度128字节;
7. <模式名>	指明被创建索引的基表属于哪个模式,缺省为当前模式;
8. <表名>	指明被创建索引的基表的名称;
9. <索引列定义> 指明创建索引的列定义。其中空间索引列的数据类型必须是DMGEO包内的空间类型,如ST_GEOMETRY等;
10. <索引列表达式>	指明被创建的索引列可以为表达式;
11. GLOBAL	指明该索引为全局索引,仅堆表的水平分区表支持该选项,非水平分区表忽略该选项。堆表上的PRIMARY KEY会自动变为全局索引;
12. ASC	递增顺序;
13. DESC	递减顺序;
14. <STORAGE子句>普通表的索引参考<STORAGE子句1>HUGE表的索引参考<STORAGE子句2>15. <STORAGE子句1>中,BRANCHNOBRANCH只能用以指定聚集索引;
16. NOSORT 指明该索引相关的列已按照索引中指定的顺序有序,不需要在建索引时排序,提高建索引的效率。若数据非有序却指定了NOSORT,则在建索引时会报错;
17. ONLINE	表示支持异步索引,即创建索引过程中可以对索引依赖的表做增、删、改操作。
18. REVERSE 表示将当前索引创建为反向索引,即按索引数据的原始数据的反向排列 顺序创建索引。(缺省为按原始数据的正向排列顺序创建索引)

语句功能

DBA 或该索引所属基表的拥有者且具有 CREATE INDEX 权限的用户定义索引。

使用说明

1. <索引名>不得与该模式中其它索引的名字相同;
2. 索引列不得重复出现且数据类型不得为多媒体数据类型、类类型和自定义类型;
3. 索引列最多不能超过63列;
4. 可以使用STORAGE子句指定索引的存储信息,它的参数说明参见CREATE TABLE语句;
5. 索引的默认表空间与其基表的表空间一致;
6. 索引的模式名与其基表的模式名一致;
7. 索引各字段值相加得到的记录内总数据值长度不得超过页大小的1/4,二级索引各字段值相加得到的记录内总数据值长度则不能超过min(页大小1/4 , 3000)8. 在下列情况下,DM利用索引可以提高性能:
	1) 用指定的索引列值来搜索记录;
	2) 用索引列的顺序来存取基表。
9. 每张表中只允许有一个聚集索引,如果之前已经指定过CLUSTER INDEX或者指定了CLUSTER PK,则用户新建立CLUSTER INDEX时系统会自动删除原先的聚集索引。但如果新建聚集索引时指定的创建方式(列,顺序)和之前的聚集索引一样,则会报错;
10. 列存储表(HUGE表)和堆表不允许建立聚集索引;
11. 指定CLUSTER INDEX操作需要重建表上的所有索引,包括PK索引;
12. 删除聚集索引时,缺省以ROWID排序,自动重建所有索引;
13. 本地索引:其分区方式与其所在基础表的分区方式一模一样的索引。本地索引的每个分区仅对应于其所在基础表的一个分区;
14. 函数索引:创建方式与普通索引一样,并且支持UNIQUESTORAGE设置项,对于 以表达式为过滤的查询,创建合适的函数索引会提升查询效率;函数索引具有以下约束:
	1) 表达式可以由多列组成,不同的列不能超过 63 个;
	2) 表达式里面不允许出现大字段和时间间隔类型列;
	3) 不支持建立分区函数索引;
	4) 函数索引表达式的长度理论值不能超过 816 个字符(包括生成后的指令和字符串);
	5) 函数索引不能为 CLUSTERPRIMARY KEY 类型;
	6) 表达式不支持集函数和不确定函数,不确定函数为每次执行得到的结果不确定,系统中不确定函数包括:RANDSOUNDEXCURDATECURTIMECURRENT_DATECURRENT_TIMECURRENT_TIMESTAMPGETDATENOWSYSDATECUR_DATABASEDBIDEXTENTPAGE
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值