dm7数据库索引相关知识以及如何查询索引信息

编程入门 行业动态 更新时间:2024-10-10 12:25:03

dm7数据库<a href=https://www.elefans.com/category/jswz/34/1771159.html style=索引相关知识以及如何查询索引信息"/>

dm7数据库索引相关知识以及如何查询索引信息

        

索引是与表相关的可选的结构(聚簇索引除外),它能使对应于表的 SQL 语句执行得更 快,因为有索引比没有索引能更快地定位信息。DM7 索引能提供访问表的数据的更快路径, 可以不用重写任何查询而使用索引,其结果与不使用索引是一样的,但速度更快。

一般情况下,在插入或装载了数据后,为表创建索引会更加有效率。如果在装载数据之 前创建了一个或多个索引,那么在插入每行时 DM7 都必须更改和维护每个索引,使得插入效 率降低。

总结:建议在插入数据后创建所以可以提高效率

索引创建准则:

使用下面的准则来决定何时创建索引:

 1. 如果需要经常地检索大表中的少量的行,就为查询键创建索引;

2. 为了改善多个表的连接的性能,可为连接列创建索引;

3. 主键和唯一键自动具有索引,在外键上很多情况下也创建索引;

4. 小表不需要索引。 选取表中的索引列时可以考虑以下几点: 1. 列中的值相对比较唯一 ; 2. 取值范围大,适合建立索引; 3. CLOB 和 TEXT 只能建立全文索引、BLOB 不能建立任何索引。

创建索引方法:

例:可以用 CREATE INDEX 语句明确地创建索引。如下语句在 emp 表的 ename 列上创建 一个名为 emp_ename 的索引,该索引使用表空间 users

create index 索引名 on 表名(列名)

CREATE INDEX emp_ename ON emp(ename)

STORAGE (

          INITIAL 50,

 NEXT 50,

ON USERS);

注:initial, 建立这个表的时候初始化分配的空间  next, 空间不够的话,下一次扩展的空间大小

可用 CREATE UNIQUE INDEX 语句来创建唯一索引,如下例子创建一个唯一索引: CREATE UNIQUE INDEX dept_unique_index ON dept (dname) STORAGE (ON users);

用户可以在希望的列上定义 UNIQUE 完整性约束,DM7 通过自动地在唯一键上定义一个 唯一索引来保证 UNIQUE 完整性约束。

自动创建唯一索引

ALTER TABLE EMP ADD CONSTRAINT PK_EMP_NAME PRIMARY KEY (NAME);

位图索引

位图索引主要针对含有大量相同值的列而创建。位图索引被广泛引用到数据仓库中,创 建方式和普通索引一致,对低基数(不同的值很少)的列创建位图索引,能够有效提高基于 该列的查询效率。且执行查询语句的 where 子句中带有 AND 和 OR 谓词时,效率更加明显。 如下例子创建一个位图索引: CREATE BITMAP INDEX S1 ON PURCHASING.VENDOR (VENDORID);

重建索引

当一个表经过大量的增删改操作后,表的数据在物理文件中可能存在大量碎片,从而影 响访问速度。另外,当删除表的大量数据后,若不再对表执行插入操作,索引所处的段可能 占用了大量并不使用的簇,从而浪费了存储空间。 可以使用重建索引来对索引的数据进行重组,使数据更加紧凑,并释放不需要的空间, 从而提高访问效率和空间效率。DM7 提供的重建索引的系统函数为:

 SP_REBUILD_INDEX(SCHEMA_NAME varchar(256), INDEX_ID int); SCHEAM_NAME 为索引所在的模式名,INDEX_ID 为索引 ID。

删除索引

如何删除索引,取决于是否是用 CREATE INDEX 语句明确地创建该索引的,是则可以 用 DROP INDEX 语句删除该索引。如下面的语句删除索引名 emp_ename 索引。

DROP INDEX emp_ename;

dm6查看索引信息

select id from ems.sysdba.sysindexes where name ='INDEX_CHANNEL_INFO_NAME';

dm7

select * from user_indexes a where a.INDEX_NAME='c1'

select * from  DBA_IND_COLUMNS

select * from all_indexes

索引定义信息无法查看索引名称等只能获取id

select * from SYSINDEXES

可以通过索引名称查询对象信息 查到索引名 id

select * from SYSOBJECTS a

where a.NAME='c1'

创建索引后,可以通过 INDEXDEF 系统函数查看索引的定义。

 INDEXDEF(INDEX_ID int, PREFLAG int); INDEX_ID

为索引 ID,PREFLAG 表示返回信息中是否增加模式名前缀。

例如,需要查 看索引 emp_name 的定义,假设其索引 ID 为 1547892,那么使用以下语句查看索引定义。

SELECT INDEXDEF(1547892, 0); 或 SELECT INDEXDEF(1547892, 1);

更多资讯 达梦社区 达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心

更多推荐

dm7数据库索引相关知识以及如何查询索引信息

本文发布于:2024-03-23 19:54:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742168.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:索引   相关知识   数据库   信息

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!