索引
索引(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可以检查索引的列。
标签:sal,创建,索引,job,emp,where From: https://www.cnblogs.com/xjianbing/p/17549534.html