如何用Oracle 9i全索引扫描完成任务

数据库 Oracle
以下的文章主要是介绍如何用Oracle 9i全索引扫描快速访问相关数据的实际操作,以下就是相关实际操作的详细介绍,望你会有所收获。

 再实际操作中我们为了实现Oracle数据库关于增加SQL优化查询智能的保证,Oracle 9i增强了全索引,SQL执行计划以支持基于功能的相关索引(function-based index)。在Oracle 8i中,SQL优化器添加了判断查询是否可以专门用一个现存的索引来解决的智能。

一旦存在索引,Oracle就会绕过对表的访问,索引组织表(index-organized table,IOT)结构就是一个例子。

在IOT结构中,所有的数据都载入索引的b-树结构,这样表(table)就成为一个多余的东西了。

 

一旦Oracle SQL优化器检测到查询无需访问表时,Oracle就调用全索引扫描并快速读取每一个索引块而无需接触表本身。有一点很重要:全索引扫描并没有读取索引节点,而是一块一块的执行扫描并快速捕获索引节点。***,Oracle调用多块读取功能,调用多个过程来读取表。

 

 

Oracle和多块读取

 

为了加快表和索引的访问速度,Oracle使用了db_file_multiblock_read_count参数(默认参数为8)来辅助把全表扫描和Oracle 9i全索引扫描所获得的数据块尽快送到数据缓冲区中。然而,这个参数只有当SQL查询执行全表扫描时才可用,并且,在绝大多数情况下,查询要使用索引来访问表。

 

Oracle对全索引扫描有如下限制:

 

SQL请求的全部列(column)必须驻留在索引树中;也就是说,SELECT和WHERE字句中的所有数据列必须存在于索引中。

查询访问大量的行(row)。根据你查询的范围,比例变化范围为10%到25%之间,这个比例参数db_file_multiblock_read_count的设置和查询的并行程度极大的影响到这个比例。

由于索引节点并没有按索引顺序排列,所以列并没有顺序。这样,ORDER BY字句将要求附加的排序操作。

Oracle提供了一个SQL提示(hint)来强制Oracle 9i全索引扫描。你也可以通过指定index_ffs提示来强制快速索引扫描,这常常与parallel_index提示组合来提高性能。例如,下面的查询强迫使用并行快速全索引扫描:

 

 

  1. select distinct /*+ index_ffs(c,pk_auto) parallel_index_  
  2. (automobile, pk_auto) color, count(*)  
  3. from  
  4. automobiles  
  5. group by color; 

 

 

由于涉及了所有的变量,所以全索引是否会加快查询速度并不能简单的加以回答。所以,大多数有经验的SQL调试者(tuner)会对符合快速Oracle 9i全索引扫描标准的查询进行手工计时,看看使用全索引扫描的反映时间是否会降低。

 

 【编辑推荐】

  1. Oracle动态Web开发实例演示
  2. 转移Oracle海量数据到另外的用户流程
  3. Oracle内存结构里Process Memory实际操作步骤
  4. Oracle同时访问N个SQL Server的实操
  5. Oracle细粒度如何进行访问

 

责任编辑:佚名 来源: 互联网
相关推荐

2010-04-14 16:45:29

Oracle 9i全索

2011-05-17 15:41:51

oracle 9i卸载

2010-04-14 09:25:08

Oracle 9i创建

2010-04-27 17:58:17

Oracle 9i

2010-04-13 10:29:12

2010-04-13 11:31:02

Oracle 9i e

2009-03-17 13:59:26

ORA-01578坏块Oracle

2010-04-16 14:30:13

Oracle 9i

2009-11-03 14:22:07

Oracle密码

2009-01-06 09:14:08

8i9ioracle

2010-04-14 09:16:39

Oracle 9i

2010-04-19 13:12:36

Oracle 9i数据

2010-04-12 14:08:09

Oracle 9i R

2010-05-05 16:11:53

Oracle 9i

2010-04-22 11:41:55

Oracle 9i

2022-07-25 11:25:42

Linux自动化技巧

2011-08-01 18:14:21

AIX5LOracle 9i

2021-03-09 10:08:15

Linux 自动化操作系统

2022-01-27 13:23:15

Linux技巧命令

2020-12-24 14:00:58

开源技术 软件
点赞
收藏

51CTO技术栈公众号