`
tower
  • 浏览: 243589 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle跳跃索引的应用场合

阅读更多
索引跳跃式扫描(index skip scan)是Oracle9i的一个新的执行特性,尤其适用于使用连接索引和访问多值索引的Oracle查询。

根据:
http://linux.jansfer.com/database/PostgreSQL/20071115/4910.html

索引跳跃式扫描(index skip scan)是Oracle9i的一个新的执行特性,尤其适用于使用连接索引和访问多值索引的Oracle查询。让我们看以下的范例。请注意到以下代码包含着连接索引:

<ccid_nobr> </ccid_nobr>
<ccid_code>create index
sex_emp_id
on
emp (sex, emp_id)
;</ccid_code>

在Oracle9i版本之前,当SQL查询中包含性别和emp_id时,或者查询指定性别行的时候才可以使用这一索引。下面的查询不能够使用连接索引:

<ccid_nobr> </ccid_nobr>
<ccid_code>select
emp_id
from
emp
where
emp_id = 123;</ccid_code>

Oracle9i的索引跳跃式扫描执行规则允许使用连接索引,即使SQL查询中不指定性别。 这一特性使得无需在emp_id行中提供第二个索引。Oracle承认索引跳跃式扫描没有直接索引查询速度快,但可以这样说,相比于整个表扫描 (table scan),索引跳跃式扫描的速度要快得多。

当Oracle没有指明索引跳跃式扫描的内部内容时,我们可以从它的执行规则中判断出,Oracle在内部上生成了多个查询,这样就满足带有多个子查询的查询:

<ccid_nobr> </ccid_nobr>
<ccid_code>SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=1 Bytes=5)
0 SORT (AGGREGATE)
1 INDEX (SKIP SCAN) OF 'SEX_EMP_ID' (NON-UNIQUE)</ccid_code>

在内部里,Oracle生成了两个查询,并连接结果的ROWID表。

<ccid_nobr> </ccid_nobr>
<ccid_code>selectemp_name from emp_where sex 
= 'F' and emp_id = 123
UNION
select emp_name from emp_where sex
= 'M' and emp_id = 123;</ccid_code>

使用索引跳跃式扫描的内涵就变得很清晰。

对于高顺序键(high order key)中的独特值数目,Oracle的索引跳跃式扫描性能将会降低。如果主列有50个值,Oracle要发出50条查询才能找回结果。 索引跳跃式扫描只适用于硬盘空间和存储空间相当紧缺的情况。(责任编辑:王瑞)


评述:
根据上面文章中的结果,实际上,跳跃索引的应用场所是有限的,如果索引的第一个字段(主列)的数据种类很多的话,跳跃索引对提高性能是很有限的,甚至是没有用处的,因为实际上oracle内部是生成了多个查询来完成这项工作的。
所以在实际应用过程中,正确的理解跳跃索引的原理,分析主列数据的情况,是用好跳跃索引的一个前提。
分享到:
评论

相关推荐

    Oracle 创建索引的基本规则

    ### Oracle 创建索引的基本规则 在Oracle数据库管理中,创建合适的索引对于提高查询效率、减少数据...通过遵循上述基本原则,可以根据具体的应用场景灵活选择和调整索引策略,从而实现最佳的查询性能和资源利用率。

    Oracle数据库索引的维护

    ### Oracle数据库索引的维护 在Oracle数据库管理与优化的过程中,索引的维护是非常关键的一环。合理地创建、管理和优化索引能够显著提高查询性能,降低系统的响应时间,从而提升整个应用程序的效率。本文将从Oracle...

    oracle约束和索引笔记

    本笔记主要探讨了两个关键概念:约束和索引,这些都是Oracle数据库中的基础但至关重要的元素。 **1. 约束(Constraints)** 约束是Oracle数据库中用于确保数据完整性的规则。它们分为以下几种类型: - **非空约束...

    数据库 创建索引 sql oracle

    "数据库创建索引SQL Oracle" 数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的安全性。本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面...

    oracle中索引的使用

    在Oracle数据库系统中,索引是一种重要的数据结构,它能够显著提升数据查询的效率。索引的使用是数据库性能优化的关键环节,尤其是在大型企业级应用中,对索引的合理设计和管理对于系统的运行速度至关重要。这篇博文...

    Oracle数据库索引优化方法探析.pdf

    Oracle 数据库索引优化方法探析 Oracle 数据库索引优化方法探析是指通过对 Oracle 数据库索引的分析和优化,以提高数据库的查询效率和性能。 Oracle 数据库索引是一种数据结构,用于快速访问数据库表的特定信息。...

    Oracle 9i用索引跳跃扫描提高查询速度

    Oracle 9i 引入了一项名为索引跳跃扫描(Index Skip Scan)的创新特性,这一特性显著提升了针对特定查询场景的性能,尤其是在处理连接索引和多值索引的查询时。传统的索引通常依赖于查询语句中完全匹配索引的所有列...

    oracle 基本索引原理

    oracle 基本索引原理,oracle 学习真必不可少的资料。

    09 oracle的索引 PPT

    Oracle数据库是世界上最广泛使用的数据库系统之一,其性能优化的一个关键因素就是索引的使用。索引可以帮助快速查找和访问数据库中的数据,显著提高查询效率。本篇将详细讲解Oracle数据库中的索引及其重要性。 一、...

    ORacle 全文索引

    综上所述,Oracle全文索引是Oracle数据库中的强大工具,它为企业提供了高效、灵活的文本搜索能力,极大地提升了数据的价值和应用范围。正确理解和应用全文索引技术,对于提升数据库系统的性能和用户体验至关重要。

    oracle索引与分区索引介绍

    Oracle 索引与分区索引介绍 Oracle 索引与分区索引是 Oracle 数据库中两个重要的概念,它们都是为了提高查询性能和数据存储效率而设计的。在本文中,我们将详细介绍 Oracle 索引与分区索引的概念、特点、分类、创建...

    ORACLE索引详解及SQL优化

    总的来说,Oracle索引详解及SQL优化是一个深度广度兼具的主题,需要结合实际数据库结构和业务需求,灵活应用各种索引类型和优化策略,以实现数据库性能的最大化。通过深入学习和实践,你可以更好地驾驭Oracle数据库...

    oracle的索引学习

    Oracle数据库中的索引是提升查询性能的关键工具,它允许数据库快速定位和检索数据。本篇文章将深入探讨Oracle索引的学习,重点关注索引的原理、类型、优缺点以及如何使用和分析执行计划。 首先,理解索引的基本概念...

    Oracle解决索引碎片功能.txt

    1. **在线重建**:使用`ONLINE`选项可以在不影响应用程序的情况下进行索引重建,这对于生产环境中的数据库非常重要。 2. **表空间选择**:通过指定`TABLESPACE name`,可以将重建后的索引放在不同的表空间中,这有助...

    Oracle 索引 使用方法

    Oracle 索引 使用方法,索引 使用原理, 索引 使用顺序过程

    oracle索引,常见索引问题

    Oracle数据库中的索引是优化查询性能的关键工具,它允许快速定位和访问数据。常见的索引类型包括B*树索引和位图索引,每种都有其特定的应用场景和优势。 1. **B*树索引**:这是最常见的索引类型,类似于二叉树结构...

    oracle 创建和删除索引

    ### Oracle 创建和删除索引详解 #### 一、Oracle索引概述 在Oracle数据库中,索引是一种重要的数据结构,用于提高数据检索速度。...在实际应用中,还需要根据具体的业务需求和数据特性来调整索引策略。

    《Oracle_全文索引_详细介绍》_40页.pdf

    ### Oracle全文索引详解 #### 一、Oracle全文索引概述 Oracle全文索引是一种特殊类型的索引,它主要用于提高基于文本的查询性能。自从Oracle 7.3版本开始引入了这一特性,允许用户通过Oracle服务器提供的上下文...

    Oracle 索引练习语句程序

    根据提供的文件信息,我们可以归纳出一系列关于Oracle数据库中索引使用的知识点。这些知识点不仅包括了基本的索引创建与查询,还涉及到了分区表及其索引的管理。 ### Oracle索引的基本概念 #### 1. 创建索引 索引...

Global site tag (gtag.js) - Google Analytics