达梦管理索引、序列、域、生成统计信息

索引的定义

普通索引

在 VENDOR 表中,以 VENDORID 为索引列建立索引 S1, 以 ACCOUNTNO, NAME 为索引列建立唯一索引 S2。

CREATW INDEX SI ON PURCHASE.VENDOR(VENDORID);
CREATE UNIQUE INDEX S2 ON PURCHASING.VENDOR(ACCOUNTNO,NAME);

函数索引

在 SALESTHISYEAR-SALESLASTYEAR 上创建一个函数索引

CREATE INDEX INDEX_FBI ON SALES.SALESPERSON(SALESTHISYEAR-SALESLASTYEAR);

空间索引

创建包含空间索引类型的表

CREATE TABLE testgeo(
	id int,
	name varchar(20),
	geo ST_polygon
	);

创建空间索引

CAREATE SPATIAL INDEX SPIDX ON testgo(geo);

删除空间索引

spidx drop index spidx;

索引的修改

重命名

重命名S1索引,需要具有DBA权限

ALTER INDEX PURCHASING.S1 RENAME TO PURCHASING.S2; 

可见/隐藏

修改索引为 INVISIBLE

alter index  index_C1 INVISIBLE; 

修改索引状态

使用 UNUSABLE 将索引置为无效状态

ALTER  INDEX  INDEX_C1  UNUSABLE; 

此时系统将不维护 INDEX_C1,与此相关的计划均失效。注意,若索引是用于保证数据唯一性的,那 么表仅能查询,不能更新。
使用 REBUILD 将索引置为生效状态。

ALTER  INDEX  INDEX_C1  REBUILD; 

索引的删除

删除 S2 索引

DROP INDEX PURCHASING.S2; 

管理位图连接索引

定义

创建位图连接索引:

create bitmap index SALES_CUSTOMER_NAME_IDX 
on SALES.SALESORDER_HEADER(
	SALES.CUSTOMER.PERSONID
) 
from   SALES.CUSTOMER, 		
	  SALES.SALESORDER_HEADER
where  SALES.CUSTOMER.CUSTOMERID = SALES.SALESORDER_HEADER.CUSTOMERID; 

执行查询:

Select TOTAL 
from SALES.CUSTOMER, 
	SALES.SALESORDER_HEADER 
where SALES.CUSTOMER.CUSTOMERID = SALES.SALESORDER_HEADER.CUSTOMERID 
and SALES.CUSTOMER.PERSONID = '12'; 

删除

DROP INDEX sales.SALES_CUSTOMER_NAME_IDX; 

sales是模式名,后面接的是索引名。

管理数组索引

定义

CREATE APPLY INDEX IDX ON TEST(C1)

使用

SELECT * FROM TEST WHERE CONTAIND(C1,2,3);

修改&删除同普通索引

管理全文索引

定义

在 PERSON 模式下的 ADDRESS 表的 ADDRES1 列上完全填充全 文索引

CREATE CONTEXT INDEX INDEX0001 ON PERSON.ADDRESS(ADDRESS1) LEXER CHINESE_LEXER

修改

在 PERSON 模式下的 ADDRESS 表的 ADDRES1 列上完全填充全 文索引

ALTER CONTEXT INDEX INDEX0001 ON PERSON.ADDRESS REBUILD;

删除

删除在 PERSON 模式下 ADDRESS 表的全文索引

ALTER CONTEXT INDEX INDEX0001 ON PERSON.ADDRESS REBUILD;

管理序列

定义

(1)创建序列 SEQ_QUANTITY

CREATE  SEQUENCE  SEQ_QUANTITY  INCREMENT  BY 10; 

(2)将序列的第一个值插入表 PRODUCT_INVENTORY 中

INSERT INTO PRODUCTION.PRODUCT_INVENTORY  VALUES(1,1, SEQ_QUANTITY.NEXTVAL); 

查询:

SELECT  *  FROM  PRODUCTION.PRODUCT_INVENTORY; 

(3)将序列的第二个值插入表 PRODUCT_INVENTORY 中

INSERT INTO PRODUCTION.PRODUCT_INVENTORY  VALUES(1,1, SEQ_QUANTITY.NEXTVAL); 

查询:

SELECT  *  FROM  PRODUCTION.PRODUCT_INVENTORY; 

修改

修改序列的步长

ALTER SEQUENCE SEQ1 INCREMENT BY 1 ;

修改序列最小值

ALTER SEQUENCE SEQ3   MINVALUE  2;

删除

删除序列 SEQ_QUANTITY

DROP SEQUENCE SEQ_QUANTITY; 

管理SQL域(DOMAIN)

定义

供具有 CREATE DOMAIN 和 CREATE ANY DOMAIN 系统权限的用户创建 DOMAIN。

CREATE DOMAIN DA INT CHECK (VALUE < 100);

删除

删除一个用户定义的域。用户可以删除自己拥有的域,具有 DROP ANY TABLE 系统权 限的用户则可以删除任意模式下的域。

DROP DOMAIN DA CASCADE;

使用

列定义虽然使用了域,但其 SYSCOLUMNS 系统表中类型相关字段记录域定义的数据类型,也就是说, 从 SYSCOLUMNS 系统表中不会表现出对域的引用。
在 T 表中使用第 1 节中创建的域 DA

CREATE TABLE T(ID DA); 

设置列、索引生成统计信息

对 SYSOBJECTS 表上 ID 列生成统计信息,采样率的百分比为 30%。

STAT 30 ON SYS.SYSOBJECTS (ID);

对 PURCHASING 模式下的索引 S1 生成统计信息,采样率为 50%。

STAT 50 ON INDEX PURCHASING.S1; 

对 SYSOBJECTS 表上 PID,NAME 列生成统计信息,采样率的百分比为 30%。

STAT 30 ON SYS.SYSOBJECTS (PID,NAME);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值