索引

索引

索引(index) 是为了加快数据的查找而创建的数据库对象,特别是大表,索引可有效的提过查找速度,也可以保证数据的唯一性,索引是由Oracle自动使用和维护的,一旦创建成功,用户不必对索引进行直接的操作。索引是独立于表的数据库结构,即表和索引是分开存放,当删除索引时,对拥有索引的表的数据没影响。

索引对象作用:优点,加快查询速度;缺点,在对数据进行更新增删改时索引也会跟着更新。

在创建PRIMARY key和unique约束条件时,系统将自动为相应的列创建唯一(unique)索引。索引的名字同约束的名字一致。

索引有两种:B*树索引和位图(bitmap)索引

  • B*树索引是通常使用的索引,也是默认是索引类型。B树是一种平衡2叉树,左右的查找路径一样。这种方法保证了对表的任何值的查证时间都相同。

    B树索引可分为:唯一索引,非唯一索引,一列简单索引和多列复合索引

创建索引

创建索引一般掌握以下原则:只有较大的表才有必要建立索引,表的记录应该大于50条,查询数据小于总行数的2%~4%,虽然可以为表创建多个索引,但是无助于查询的索引不但不会提高效率,还会增加系统开销。因为执行DML操作时,索引也要跟着更新,这时索引会降低系统的性能。一般在主键列或经常出现where子句或连接条件中的列建立索引,该列称为索引关键字。

创建索引不需要特定的系统权限。建立索引的语法如下:

create [{UNIQUE|BITMAP}] INDEX 索引名 on 表名(列名1[列2,....]);

其中:UNIQUE代表创建唯一索引,不指明为创建非唯一索引。

BITMAP 代表创建位图索引,如果不指明该参数,则创建B*树索引。

列名是创建索引的关键字列,可以是一列或多列。

创建复合索引

create inde emp_jobsal on emp(job,sal);
--调用索引
select enam,job,sal from emp where job='manager' and sal>2500;

说明:本列创建的两列复合索引,job是主键,sal是次健。where条件中引用了job和sal,而且按照索引关键字出现的顺序引用,所以查询中,索引被引用。

以下查询可能会

select enam,job,sal from emp where job='cleark'   --会引用该复核索引
select enam ,job,sal from emp where sal>2500;--不会引用该查询。因为没有引用索引关键字的主键:

 

删除索引

删除索引的人应该是索引的创建者或拥有drop any index系统权限用户。索引的删除对表没影响。

~~~sql

drop index 索引名 ~~~

查看索引

通过数据字典USER_index可以检查创建的索引。

通过查询数据字典USER_IND_COLUMNS可以检查索引的列。

posted @   翻滚的小井蛙  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示