`

在Oracle 10g有几种查找数据的方法

阅读更多

在Oracle 10g 有几种查找数据的方法,了解这些查找数据的方法,有利于我们读懂执行计划,并通过执行计划来优化我们的ORacle数据库系统。

     查找数据主要有一下方式:

       1,全表扫描和RowId查找数据

       2,通过索引查找数据

     1.1 全表扫描(Full Table Scans )

        有时Oracle数据库在评估最优执行计划时,当去取大量数据时,就会优先考虑使用全表扫描,因为这时全表扫描是最优的。一般取出的数据占表的数据5%--10%左右会发生表扫描,一般在OLTP系统中尽量避免表扫描。

       为了更好的使用表扫描,提高效率,在oracle 中有好几种分区方法,提高表扫描的效率,让表按具体业务逻辑来分区,尽量做到分区消除,减少表扫描的大小,提高性能。

     1.2 ROWID查找数据(Table Access by ROWID 或R owid lookup )

       行ROWID是行数据在数据库 文件,数据块和行在块的具体位置,所以是Oracle最快的定位方法。

       这种方法只能一次读取一个IO,不会涉及多个IO。

     目前通过索引查找,主要有5种索引查找方式:

         1,索引唯一查找(index unique scan )

         2,索引范围查找 (index range scan )

         3,索引全部扫描 (index full scan )

         4,索引快速扫描 (index fast full scan )

         5,索引跳跃式查找 (index skip scan )

      2.1 ,索引唯一查找(index unique scan )

           当查询列是 如果存在UNIQUE 或PRIMARY KEY 约束(它保证了语句只存取单行)的话,Oracle经常实现唯一性扫描。此查找方法效率很高。

        2.2 ,索引范围查找 (index range scan )

          使用一个索引存取多行数据,在唯一索引上使用索引范围扫描的典型情况下是在谓词(where限制条件)中使用了范围操作符(如>、<、<>、>=、<=、between)

      2.3, 索引全部扫描 (index full scan )

        全索引扫描。对查询出的数据进行排序,而且此时查询出的数据都必须从索引中可以直接得到。同时order by排序的数据应该是按索引的顺序来读取的。 如下:         

explain plan   for   select empno,ename from big_emp order   by empno,ename
      2.4,索引快速扫描 (index fast full scan )

          与 index full scan很类似,但是一个显著的区别就是它不对查询出的数据进行排序,即数据不是以排序顺序被返回 ,在这种存取方法中,可以使用多块读功能,也可以使用并行读入,以便获得最大吞吐量与缩短执行时间,索引快速全局扫描,不带order by情况下常发生,如下:

explain plan   for   select empno,ename from big_emp
      2.5, 索引跳跃式查找 (index skip scan )

         where条件列是非索引的前导列情况下常发生。如下:

create   index i_emp on emp(empno, ename);
select   /* + index_ss(emp i_emp) */   job from emp where ename = ' SMITH ' ;
      

   总结:

     index full scan (索引全扫描):有排序 ,就是利用到了index的排序功能。原理:通过root根级----到中间级---叶级

      index fast full scan (索引快速扫描):无排序, 就可以利用多块读取方式,提高查询速度,因为数据要求是无序的。即可以使用多块查询,取出的数据就是数据存放的顺序。

      当进行index full scan的时候 oracle定位到索引的root block,然后到branch block(如果有的话),再定位到第一个leaf block, 然后根据leaf block的双向链表 顺序读取。它所读取的块都是有顺序的,也是经过排序的。

     而index fast full scan则不同,它是从段头开始,读取包含位图块,root block,所有的branch block, leaf block,读取的顺序完全有物理存储位置决定,并采取多块读,没次读取db_file_multiblock_read_count个

分享到:
评论

相关推荐

    Oracle11g从入门到精通2

    10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 11.1.3 控制文件的创建 11.1.4 控制文件的备份与恢复 11.1.5 控制文件...

    Oracle11g从入门到精通

    10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 11.1.3 控制文件的创建 11.1.4 控制文件的备份与恢复 11.1.5 控制文件的查询...

    Oracle.11g.从入门到精通 (2/2)

    10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 11.1.3 控制文件的创建 11.1.4 控制文件的备份与恢复 11.1.5 控制文件的查询与删除 ...

    Oracle.11g.从入门到精通 (1/2)

    10.7 几种备份与恢复方法的比较 第11章 控制文件及日志文件的管理 11.1 控制文件 11.1.1 控制文件概述 11.1.2 多路复用控制文件 11.1.3 控制文件的创建 11.1.4 控制文件的备份与恢复 11.1.5 控制文件的查询与删除 ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    数据库系统实验课实验报告.doc

    Oracle 10G 介绍资料 " " "2. SQL Plus命令手册 " " "3. Oracle数据字典 " "扩展实验 "1. 使用企业 管理器登录Oracle服务器,观察系统架构及数据库" " "2. 使用OEM创建、删除数据库 " " "此部分内容不要求在实验室...

    超级有影响力霸气的Java面试题大全文档

    如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 18、error和exception有什么区别?  error 表示恢复...

    功能超级强悍的文本编辑器 PilotEdit 14.3.0 + x64 中文多语免费版.zip

    文本编辑器,支持文本编辑,比较,FTP编辑,FTP上传下载,加密,十六进制编辑,列模式,回行显示,正则表达式,多行查找和替换,代码折叠,关键字高亮显示,编辑400GB的大文件,比较100GB的大文件,对超过1G的大文件...

    java 面试题 总结

    如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 15、error和exception有什么区别? error 表示恢复不是...

    网管教程 从入门到精通软件篇.txt

    Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 ...

    (重要)AIX command 使用总结.txt

    有的用户登录后就长时间空闲,有可能导致安全上的问题,通过打开 /etc/profile 中 TMOUT 注释,将在设置的时间到达后自动logout用户 例如: export TMOUT=120 那么, 用户两分钟没有击键,将自动logout //AIX系统中如何...

Global site tag (gtag.js) - Google Analytics