首页 / ORACLE / 【数据库】之Oracle索引
【数据库】之Oracle索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【数据库】之Oracle索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2257字,纯文字阅读大概需要4分钟。
内容图文
![【数据库】之Oracle索引](/upload/InfoBanner/zyjiaocheng/868/e6aa2885f1c74500b518a2baecbe266b.jpg)
索引(Index
)
什么是索引
在关系型数据库中,索引是一种单独的,物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需要的内容。
索引提供对表中行的直接和快速访问,它的目的是用已索引的路径快速定位数据以减少磁盘
IO
。索引由Oracle
自动使用和维护,索引逻辑地址和物理地址独立于他们索引的表,这意味者索引可以在任何使用被创建或删除,并且不影响基表或其它索引。当删除表时,相应的索引一会被删除。
索引类型
唯一性索引
当我们在一个表中定义一个列为主键,或者定义一个唯一键约束时
Oracle
服务器自动创建该索引,索引的名字习惯上就是约束的名字。
非唯一性索引
由用户创建,例如:可以创建一个
FOREIGN KEY
列索引用于一个查询中的连接来改进数据取回的速度。包括:单行索引,符合索引,函数索引
创建索引方式
自动创建
在一个表的定义中,当定义一个
PRIMARY KEY
或UNIQUE
约束时,一个唯一索引被自动创建
手动创建
用户能够在列上创建非唯一的索引来加速对行的访问
什么时候使用索引
- 一个列包含一个大范围的值
- 一个列包含很多的空值
- 一个或多个列经常同时在一个
WHERE
子句中或一个连接条件中被使用- 表很大,并且经常的查询期望取回少于百分之二到四的行
什么时候不能创建索引
- 表很小
- 不经常在查询中作为条件被使用的列
- 大多数查询期望取回多于表中百分之二到四的行
- 表经常被更新
- 被索引的列作为表达式的一部分被引用
索引创建
语法
CREATE INDEX index ON table (column, ....);
创建单行索引
为
employees
表中的last_name
创建一个索引并命名为emp_index
CREATE INDEX emp_index on employees(last_name);
创建复合索引
为
departmens
表创建一个包含manager_id
与location_id
复合索引并命名为dept_man_loc
CREATE INDEX dept_man_loc ON departmens(manager_id, location_id);
创建函数索引
为
departments
表中的department_name
创建一个带有大写函数的索引dept_upper2
CREATE INDEX dept_upper2 on departments(upper(department_name));
查询索引
USER_INDEXES: 数据字典视图包含索引和它唯一的名字
USER_IND_COLUMNS: 视图包含索引名,表名和列名
SELECT ic.index_name, ic.column_name,
ic.column_position, ix.uniqueness
FROM user_indexes ix, user_ind_columns ic
WHERE ix.index_name = ic.index_name
AND ic.TABLE_NAME = "DEPARTMENTS";
删除索引
drop index dept_upper;
索引优缺点
索引并不一定会加快查询速度,尤其对于比较小的表
索引是用空间换时间来实现快速查询,因此也势必会拖慢INSERT
、DELETE
、UPDATE
等操作,因为每次操作后索引也必须更新
内容总结
以上是互联网集市为您收集整理的【数据库】之Oracle索引全部内容,希望文章能够帮你解决【数据库】之Oracle索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。