oracle中的索引
一、索引相关概念:
索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。
二、创建引索
自动创建:在定义primary key或unique约束之后系统自动在相应的列上创建唯一性的索引
手动创建:用户可以在其他列上创建非唯一的索引,以加速查询
语法: CREATE INDEX index ON table (column)
三、基于函数的索引
基于函数的索引时基于表达式的索引
索引表达式由列、常量、sql函数和用户自定义的函数
CREATE INDEX upper_emp_ename_iddex
ON EMP(UPPER(emp_ename));
--index created---
select * from emp where upper(emp_ename) = 'SIMTHS';
删除索引:DROP INDEX index;
只有索引的拥有者或拥有DROP ANYINDEX权限的用户才可以删除索引
注:
建立索引的目的是:
l 提高对表的查询速度;
l 对表有关列的取值进行检查。
提高查询速度的方法还有在表上建立主键,主键与唯一索引的差别
在于唯一索引可以空,主键为非空
对表进行insert,update,delete处理时,由于要表的存放位置记录到索引项中而会降低一些速度。
注意:一个基表不能建太多的索引;
空值不能被索引
只有唯一索引才真正提高速度,一般的索引只能提高30%左右。