【DM8】索引

本文详细介绍了Oracle数据库中的各种索引类型,如聚簇索引、唯一索引、函数索引、复合索引、位图索引、分区索引和全文索引,以及它们的创建、使用示例和注意事项,最后讨论了索引的维护和管理方法。
摘要由CSDN通过智能技术生成

默认索引组织表。DM默认的聚簇索引是rowid

  • primary key
  • cluster key
  • unique key
    索引类型:
  • 聚簇索引 有且只有一个默认创建
  • 唯一索引 保证不会有两行数据具有相同的值
  • 函数索引 包括函数表达式预先计算的值
  • 复合索引 大于1列一起建立索引 也叫组合索引
  • 位图索引 列上的值的类型少
  • 全文索引 文本列上建索引
  • 分区索引 分区表上建的索引
    索引采用的是B+树
    索引也占存储空间,存储在专属的表空间中

唯一索引

CREATE TABLE TEST.T11(ID INT,name VARCHAR(20));
CREATE UNIQUE INDEX TEST.T11_index on TEST.T11(ID) TABLESPACE "test01";

查看索引

SELECT * from SYS.DBA_INDEXES WHERE TABLE_NAME='T11';

默认有一个cluster的聚簇索引
在这里插入图片描述

函数索引

CREATE TABLE TEST.T12 as SELECT * from DMHR.EMPLOYEE;
SELECT * from TEST.T12;
CREATE INDEX TEST.T12_index ON TEST.T12(upper(email)) TABLESPACE "test01";
EXPLAIN SELECT EMPLOYEE_NAME,EMPLOYEE_ID,EMAIL from TEST.T12 WHERE upper(email)='maxueming@dameng.com';

索引生效
在这里插入图片描述

复合索引(组合索引)

由表中的多列组成

CREATE INDEX TEST.T12_index2 ON TEST.T12(EMPLOYEE_ID,EMPLOYEE_NAME) TABLESPACE "test01";
EXPLAIN SELECT * FROM TEST.T12 where TEST.T12.EMPLOYEE_NAME='马学铭';

索引生效
在这里插入图片描述

位图索引

性别适合建位图索引

create TABLE TEST.T13(ID int,gender CHAR(1),name VARCHAR(20));
INSERT INTO TEST.T13 VALUES(1,0,'zhangsan');
SELECT * FROM TEST.T13;
CREATE BITMAP INDEX TEST.T13_index ON TEST.T13(gender);
BEGIN
dbms_stats.gather_table_stats('TEST','T13',NULL,100,FALSE,'FOR ALL COLUMNS SIZE AUTO');
end;
BEGIN
dbms_stats.column_stats_show('TEST','T13','GENDER');
END;
EXPLAIN SELECT * FROM TEST.T13 where t13.GENDER=0;

没有走索引的原因是因为表中只有一行数据 ,系统会认为走全表比走位图索引更快一点,但是索引是建成功的。
在这里插入图片描述

分区索引

如果表是分区表的话 建立的索引就是分区索引

CREATE INDEX T1_idx ON TEST.T1(ID)
STORAGE(INITIAL 1,NEXT 1,MINEXTENTS 1,ON DMTS01);

在这里插入图片描述

全文索引

全文检索的中文分词依赖系统词库,该词库是只读的,不允许修改
在这里插入图片描述

CREATE CONTEXT INDEX idx_loca ON DMHR.LOCATION(STREET_ADDRESS)lexer default_lexer;
alter CONTEXT INDEX DMHR.idx_loca ON DMHR.LOCATION rebuild;
SELECT * FROM DMHR.CTI$IDX_LOCA$I;--【I D N P】

在这里插入图片描述
如何使用全文索引

SELECT * FROM DMHR.LOCATION WHERE CONTAINS(STREET_ADDRESS,'东路'and'28');
SELECT * FROM DMHR.LOCATION WHERE STREET_ADDRESS LIKE '%东路%'and STREET_ADDRESS LIKE'%28%';

在这里插入图片描述

索引维护

索引维护,包括收集统计信息,建议不要在业务高峰时间段进行。
查看索引的相关信息

  • dba_indexes
  • user_indexes

重建索引

ALTER INDEX TEST.T12_index REBUILD;

删除索引

drop index TEST.T12-INDEX;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值