Oracle 索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 索引相关的知识,希望对你有一定的参考价值。

索引是建立在数据库表中的某些列的上面,是与表关联的,可提供快速访问数据方式,但会影响增删改的效率;常用类型(按逻辑分类):单列索引和组合索引、唯一索引和非唯一索引。

 

什么时候要创建索引

(1)在经常需要搜索、主键、连接的列上

(2)表很大,记录内容分布范围很广

(3)在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的

(4)在经常使用在WHERE子句中的列上面创建索引

 

什么时候不要创建索引

(1)表经常进行 INSERT/UPDATE/DELETE 操作

(2)表很小(记录超少)

(3)列名不经常作为连接条件或出现在 WHERE 子句中

(4)对于那些定义为text, image和bit数据类型的列不应该增加索引

创建索引

 

【语法】

CREATE [UNIQUE] INDEX <index_name> ON <table_name>(字段 [ASC|DESC]);

 

【说明】

UNIQUE --确保所有的索引列中的值都是可以区分的。

[ASC|DESC] --在列上按指定排序创建索引。

 

(创建索引的准则:

1.如果表里有几百行记录则可以对其创建索引(表里的记录行数越多索引的效果就越明显)。

2.不要试图对表创建两个或三个以上的索引。

3.为频繁使用的行创建索引。)

 

 

【示例】

--创建单列唯一索引,表中的列值将不允许重复

create unique index index_emp_empno on emp(empno);

 

--创建单列非唯一索引

create index index_emp_ename on emp(ename);

 

--创建组合列、唯一索引

create unique index index_emp_ename_job on emp(ename,job);

 

--创建组合列、非唯一索引

create index index_emp_job_sal on emp(job,sal);

 

 

 删除索引

 

【语法】

DROP INDEX <index_name>;

 

 

【示例】

--删除索引

drop index index_emp_empno;

drop index index_emp_ename;

drop index index_emp_ename_job;

drop index index_emp_job_sal;

 

以上是关于Oracle 索引的主要内容,如果未能解决你的问题,请参考以下文章

oracle 数据库 索引 全文索引

怎么查看索引oracle,建索引

oracle 索引失效是怎么回事?

oracle怎么把索引改成唯一索引

如何查看oracle失效的索引

oracle中删除记录时将索引一块删除吗