Oracle索引概述

Oracle序列有两个作用

1、提供主键和唯一键约束:外键约束在父表中定义了,所以在子表中不是必须的,但是出于性能的考虑,通常也在子表中的外键约束列建立索引;

2、提高系统的系能:语句中有where子句、语句中带有排序操作,语句中带有表连接的操作

 

索引的类型:

B*Tree Index:默认类型,当一个表很大,而查询的数据只占表全部数据中很小的一部分的时候,这种索引很有效;

bitmapindex:

 

B*Tree Index:

通常,如果一个查询需要取出的数据超过全表数据的2%--4%,那么全表扫描会更快;

还有一种特殊的对NULL值的检索会用到全表扫描,因为NULL值不会进入B树索引,如:

select * from emp where last_name is null; ---这条语句将使用全表扫描;

 

对B树索引应用场合的定义:

列中的候选对象比较多,表有很多的行,使用了where子句和JOIN条件;

 

B树索引不太适合数据仓库的应用;

 

位图索引

位图索引可以对null值进行

对位图索引应用场合的定义:

列中的候选对象比较少,表中有很多的行,对表的操作经常使用布尔逻辑;

 

索引类型选项

  • unique or nonunique
  • reverse key:有效的将索引键分散开;
  • compressed:重复的索引键值只存储一次;
  • composite
  • function based
  • ascending or descending

这六个选项对B树索引都可以使用,但是只有最后三项可以对位图索引使用;

 

thedafault type of indexx is a nonunique, noncompressed, non-reverse key B*Treeindex

itis  not possible to create a uniquebitmap index;

 

建立索引

--创建索引

CREATE UNIQUE INDEXdept_i1 ON detp(deptno);

CREATE UNIQUE INDEXemp_i1 ON emp(empno);

CREATE INDEX emp_i2ON emp(first_name,last_name);

CREATE BITMAP INDEXemp_i3 ON emp(deptno);

ALTER TABLE dept ADDCONSTRAINT dept_pk PRIMARY KEY(deptno);

ALTER TABLE emp ADDCONSTRAINT emp_pk PRIMARY KEY(empno);

ALTER TABLE emp ADDCONSTRAINT emp_fk FOREIGN KEY(deptno) REFERENCES dept(deptno);

 

修改和删除索引

ALTER INDEX主要被管理员使用来调整索引的物理属性,不能被用来调整索引的逻辑属性

如果想修改一个索引,请先删除,然后重建:

drop index emp_i2;

createindex emp_i2 on emp(first_name,last_name, dob);

 

当表被删除的时候,建立在表之上的约束条件和索引也一并删除;

如果索引在创建约束条件是隐式创建的,删除约束条件的同时,索引也自动删除

显示创建的索引将不会被删除;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值