索引是与表相关的一个可选结构
用以提高 SQL 语句执行的性能
减少磁盘I/O
使用 CREATE INDEX 语句创建索引
在逻辑上和物理上都独立于表的数据
Oracle 自动维护索引
--联想新华字典去理解记忆
--创建表并制定存储的表空间
create table stu
(
sno number,
sname varchar2(20)
)
tablespace tsm;
--创建标准索引
create index index_student --index_student 索引名称
on student(address) --索引关联的表以及字段
tablespace tsm; --索引存放位置
--重建索引
ALTER INDEX index_student rebuild;
--删除索引
drop index index_student;
--唯一索引
select * from emp;
--唯一索引确保在定义索引的列中没有重复值
--Oracle 自动在表的主键列上创建唯一索引
--使用CREATE UNIQUE INDEX语句创建唯一索引
create unique index uq_index
on emp(ename)
--没有加表空间的时候,默认的就是放置与表存放的位置相同
--组合索引
create index com_index
on emp(ename,job)
--基于多个字段创建的索引
--反向键索引
反向键索引反转索引列键值的每个字节
通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上
创建索引时使用REVERSE关键字
create index rev_index
on emp (mgr) reverse;
alter index rev_index rebuild noreverse;
select empno,rowid from emp;
--位图索引
位图索引适合创建在低基数列上
位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
减少响应时间
节省空间占用
create bitmap index bit_index
on emp(hiredate);
--索引组织表 ORGANIZATION INDEX
CREATE TABLE ind_org_tab (
vencode NUMBER(4) PRIMARY KEY,
venname VARCHAR2(20)
)
ORGANIZATION INDEX;
insert into ind_org_tab values(111,'aaa');
insert into ind_org_tab values(222,'bbb');
insert into ind_org_tab values(333,'ccc');
--基于主键查找,不是基于rowid查询
select vencode,rowid from ind_org_tab;
普通表 索引组织表
ROWID 唯一地标识行 主键唯一地标识行
隐式的 ROWID 列 没有隐式的 ROWID 列
基于 ROWID 的访问 基于主键的访问
顺序扫描返回所有行 完全索引扫描返回所有行,并按主键顺序排列
支持分区 不支持分区
--基于函数的索引
select * from emp;
create index lower_index
on emp(lower(ename));
--查询索引
select * from USER_INDEXES;
--USER_IND_PARTITIONS - 用户创建的分区索引的信息
select * from user_ind_partitions;
--USER_IND_COLUMNS 查看在哪些表的字段上面创建了索引
select * from user_ind_columns;
oracle 索引
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Oracle Database 监控:zabbix(一)
AMGYM
2019-02-24 13:05:14
Oracle Database 监控(check_oracle_health)
AMGYM
2019-02-24 13:05:14
Oracle11g 基于linux 6.3下安装
love壁虎
2019-02-24 12:55:06
Oracle导入导出数据的几种方式
linzhongyilisha
2019-02-24 12:43:05
oracle em启动
huchazsu
2019-02-23 14:01:49
oracle 启动归档模式
huchazsu
2019-02-23 14:01:14
oracle 11G 静默安装
anshenwang
2019-02-23 13:56:41
ORA-32001: 已请求写入 SPFILE 但是在启动时未
xuts5
2019-02-23 13:48:29
RMAN-20207
xuts5
2019-02-23 13:48:29
oracle表分区详解
xuts5
2019-02-23 13:48:29
oracle删除及导入数据库
曉竹
2019-02-23 13:35:55
记一次从oracle到hive的历史数据迁移(一)
綠箭俠1
2019-02-23 13:33:37
路由器 交换机的telnet登陆
與誰爭鋒
2019-02-23 13:41:55
linux初学之信号及信号的简介
imGrt
2019-02-23 13:50:03