Oracle系列:(25)索引

什么是索引【Index】

(1)是一种快速查询表中内容的机制,类似于新华字典的目录

(2)运用在表中某个/些字段上,但存储时,独立于表之外

为什么要用索引

(1)通过指针加速Oracle服务器的查询速度

(2)通过rowid快速定位数据的方法,减少磁盘I/O

rowid是oracle中唯一确定每张表不同记录的唯一身份证

rowid的特点

(1)位于每个表中,但表面上看不见,例如:desc emp是看不见的

(2)只有在select中,显式写出rowid,方可看见

(3)它与每个表绑定在一起,表亡,该表的rowid亡,二张表rownum可以相同,但rowid必须是唯一的

(4)rowid是18位大小写加数字混杂体,唯一表代该条记录在DBF文件中的位置

(5)rowid可以参与=/like比较时,用‘‘单引号将rowid的值包起来,且区分大小写

(6)rowid是联系表与DBF文件的桥梁


思考:rowid是联系表与DBF文件的桥梁,我不理解。

索引的特点

(1)索引一旦建立, Oracle管理系统会对其进行自动维护, 而且由Oracle管理系统决定何时使用索引

(2)用户不用在查询语句中指定使用哪个索引

(3)在定义primary key或unique约束后系统自动在相应的列上创建索引

(4)用户也能按自己的需求,对指定单个字段或多个字段,添加索引

什么时候【要】创建索引

(1)表经常进行 SELECT 操作

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

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

注意:符合上述某一条要求,都可创建索引,创建索引是一个优化问题,同样也是一个策略问题

什么时候【不要】创建索引

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

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

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

同上注意

为emp表的empno单个字段,创建索引emp_empno_idx,叫单列索引,create index 索引名 on 表名(字段,...)

create index emp_empno_idx
on emp(empno);

为emp表的ename,job多个字段,创建索引emp_ename_job_idx,多列索引/联合索引

create index emp_ename_job_idx 
on emp(ename,job);

如果在where中只出现job不使用索引

如果在where中只出现ename使用索引

我们提倡同时出现ename和job

注意:索引创建后,只有查询表有关,和其它(insert/update/delete)无关,解决速度问题

删除emp_empno_idx和emp_ename_job_idx索引,drop index 索引名

drop index emp_empno_idx;
drop index emp_ename_job_idx;

时间: 2024-11-01 21:50:52

Oracle系列:(25)索引的相关文章

.Net程序员学用Oracle系列(1):导航目录

原文:http://www.cnblogs.com/hanzongze/p/oracle-catalog.html .Net程序员学用Oracle系列(1):导航目录 .Net程序员学用Oracle系列(2):准备测试环境 .Net程序员学用Oracle系列(3):数据库编程规范 .Net程序员学用Oracle系列(4):四个基本概念 .Net程序员学用Oracle系列(5):三大数据类型 .Net程序员学用Oracle系列(6):表.字段.注释.约束.索引 .Net程序员学用Oracle系列(

足球与oracle系列(5):fifa14游戏缺失的directX库类比于oracle的rpm包

***********************************************声明**********************************************  原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 表述有错误之处,请您留言或邮件([email protected])指明,不胜感激. 本文转载必须保留此处:http://blog.csdn.net/huangyanlong/article/det

oracle系列(四)oracle事务和常用数据库对象

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:本次内容的相关知识点我们在学习sqlserver2008R2的时候介绍过一些,包括:事务.索引.视图等.那么今天我们学习在oracle上实现这些重要的内容,以实现数据库的优化. 一.事务 1.简介 事务是数据处理的核心,是业务上的一个逻辑单元,它能够保证其中对数据所有的操作,要么全部成功,要么全部失败.DBMS通过事务的管理来协调用

足球与oracle系列(1):32路诸侯点兵,oracle32进程联盟 之A组巴西SMON进程的大局观

声明:        这不是技术文档,既然学来几招oracle简单招式,就忍不了在人前卖弄几下.纯为茶余饭后与数朋库友的插科打诨,只为轻松中带有一丝的诙谐,IT技术也能用来调侃一番,还蛮耐人寻味.        同时近来数月oracle知识点忘记了不少,为了把知识点重现,点滴间偶出灵感乍现,以一种自由的形式将其发布,由于本人学艺不精,文中列举的例子或故事,其中必然会有与技术联系牵强之处,望大家海涵.只当是一部小菜鸟的杂记,不要把这当做技术文章喔,亲!看过.笑过,就好.        欢迎拍砖,这

ORACLE Index Lookup索引访问路径总结

在ORACLE中,索引访问/查找(Index Lookup)路径有五种方式,分别为INDEX UNIQUE SCAN.INDEX RANGE SCAN.INDEX FULL SCAN.INDEX FAST FULL SCAN .INDEX SKIP SCAN.下面通过一些案例介绍.总结一下这五种索引访问路径.本文是总结这方面的知识点,所以文中一些地方参考.引用了参考资料中的部分内容.详细.具体资料可以参考官方资料Index Scans 索引唯一扫描(INDEX UNIQUE SCAN)   索引

Oracle中的索引

Oracle中的索引 在关系数据库中,索引是一种与表有关的数据库结构,它是除表以外的另一个重要模式对象.索引是建立在表的一列或多个列上的辅助对象,目的是提高表中数据的访问速度. 索引时表示数据的另一种方式,它提供的数据顺序不同于数据在磁盘上的物理存储顺序.它重新排列数据的物理位置,使其值为有序键值列表,每个键值是指向表行的指针,故其排列方式使其搜索变得更加有效. 如果表中定义了主键约束,而主键列上不存在索引,则Oracle自动创建一个. Oracle中常用的索引类型有:B树索引.反向键索引.位图

Oracle序列和索引

序列和索引 一.序列 1.序列的概念: 序列(Sequence)是用来生成连续的整数数据的对象.它常常用来作为主键的增长列,可以升序,也可以降序. 2.创建序列: 语法:创建序列                                              语法解析: CREATE SEQUENCE sequence_name [STRAT WITH num] START WITH:从某一个整数开始,升序默认为1,降序默认为-1. [INCREMENT BY increment] I

足球和oracle系列(3):oracle过程排名,世界杯第二回合战罢到来!

足球与oracle系列(3):oracle进程排名.世界杯次回合即将战罢! 声明:        这不是技术文档,既然学来几招oracle简单招式.就忍不了在人前卖弄几下.纯为茶余饭后与数朋库友的插科打诨.仅仅为轻松中带有一丝的诙谐,IT技术也能用来调侃一番,还蛮耐人寻味.        同一时候近来数月oracle知识点忘记了不少,为了把知识点重现.点滴间偶出灵感乍现.以一种自由的形式将其公布.因为本人学艺不精.文中列举的样例或故事.当中必定会有与技术联系牵强之处,望大家海涵. 仅仅当是一部小

足球与oracle系列(2):巴西揭幕战预演,oracle体系结构杂谈

巴西:战术打法:4222不动摇,主力阵容构架无悬念 核心体系无异议,4222完整诠释,体系架构如此清晰 世界顶级球队:巴西 数据库技术核心团队:甲骨文 教练员:DBA 守门员:归档日志文件 四大后防保证:数据文件.参数文件.日志文件.控制文件 四大中场核心:共享池(库缓存区.数据字典缓冲区).数据缓冲区.日志缓冲区 双前锋:user进程.server进程 替补:大池.java池.流池(有时的板凳球员可以主宰最后的比赛胜负) 脏块:足球也罢.轨迹也罢.这都已不再重要 实例参数文件:球员大名单 pf

Oracle中组合索引的使用详解(转)

在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引.在组合索引的使用方面,Oracle有以下特点: 1. 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引: 2. 在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会使用到该索引,这取决于优化器计算的使用索引的成本和使用全表扫描的成本,Oracle会自动选择成本低的访问路径(请见下面的测试1和