赞
踩
在关系型数据库中,索引是一种单独的、物理的对数据库表中的一列或多列的值进行排序的一种存储结构,他是某个表中一列或若干列值的集合和相应的指向表中物理标识,这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录的页码快速找到所需的内容;
索引提供对表中行的直接和快速访问,他的目的是用已索引的路径快速定位数据以减少磁盘I/O。索引有Oracle服务器自动使用和维护,索引逻辑地和物理地独立于他们所索引的表,这意味着索引可以在任何时候被创建或删除,并且不影响基表或其他的索引。当删除表时,相应的索引也被删除;
一、索引类型
唯一性索引
当在一个表中定义一个例为主键,或者定义一个唯一约束时Oracle服务器 自动创建该索引,所有的名字习惯上是约束的名字;
非唯一性索引
由用户创建,例:可以创建一个foreign key列索引用于一个查询中的链接来改 进数据取回的速度;
二、创建索引的方式
自动
在一个表的定义中,当定义一个primary key或unique约束时,一个唯一索引 被自动创建;
手动
用户能够在列上创建非唯一的索引来加速对行的访问;
三、使用索引
过多也是件坏事
在表上建立更多的索引并不意味着更快地查询,在带索引的表上被提交的每个 DML操作意味着索引必须更新;与表连接的索引越多,对Oracle数据库的影 响越大,Oracle数据库在每次DML操作之后必须更新所有的索引;
什么时候创建索引
1.一个列包含一个大范围的值;
2.一个列包含很多的空值;
3.一个或多个列经常同时在一个where子句中或一个连接条件中被使用
4.表很大,并且经常的查询期望取回少于百分之2到4的行;
什么时候不创建索引
1.表很小;
2.不经常在查询中作为条件使用的列;
3.大多数查询期望取回多于表中百分之2到4的行;
4.表经常被更新;
5.被索引的列作为表达式的一部分被引用;
操作索引
1.非唯一性索引的类型
单行索引,复合索引(组合索引),函数索引;
2.创建索引的语法
3.创建单行索引
例
为 employees 表中的 last_name 创建一个索引并命名为 emp_index。
Create index emp_index on employees(last_name);
4.创建复合索引
例
为 departments 表 创 建 一 个 包 括 manager_id 与 location_id 复 合 索 引 并 命 名 为dept_man_loc。
Create index dept_man_loc on departments(manager_id , location_id);
5.创建函数索引
例
为 departments 表中的 department_name 创建一个带有大写函数的索 引 dept_upper2。
Create index dept_upper2 on departments(upper(department_name));
6.查询索引
Column_position索引的位置
Uniqueness 索引唯一的名字
例
查询departments表的索引名字,所在列的名字,列的位置,唯一的 名字
Select ix.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’;
7.删除索引
例
删除名称为dept_upper 的索引;
Drop index dept_upper ;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。