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

Oracle 索引介绍

阅读更多
Oracle 创建索引要做到三个适当:即在适当的表上适当的列上创建适当数量的索引。

具体的来说,要做到这个三个适当有如下几个要求。

一、根据表的大小来创建索引
虽然给表创建索引,可以提高查询的效率。但是数据库管理员需要注意的是,索引也需要一定的开销的。为此并不是说给所有的表都创建索引,那么就可以提高数据库的性能。恰恰相反,如果不管三七二十一,给所有的表都创建了索引,那么其反而会给数据库的性能造成负面的影响。因为此时滥用索引的开销可能已经远远大于由此带来的性能方面的收益。所以,数据库管理员首先需要做到,为合适的表来建立索引,而不是为所有的表建立索引。

一般来说,不需要为比较小的表创建索引,而对于大表的话,则需要进行实际情况实际分析。简单一点的,可以根据大致的比率来确定。

二、根据列的特征来创建索引
列的特点不同,索引创建的效果也不同。数据库管理员需要了解为哪些列创建索引可以起到事倍功半的效果。同时也需要了解为哪些列创建索引反而起到的是事倍功半的效果。

三、在一个表上创建多少索引合适
通常来说,表的索引越多,其查询的速度也就越快。但是,表的更新速度则会降低。因此,要找到一个合适的平衡点。

索引类型介绍
1,B*树索引(B*Tree Index)
   B*树索引就是我们常说的'传统'的索引。B*树索引结构中,所有的叶子都在同一层中,整个索引结构数据块的层数称之为索引的高度(Height),因此,无论根据索引查找表中的哪一条记录,所执行的I/O次数都是相同的。这就是B*树索引中的‘B’的含义,即Balance(平衡)之意。换句行话说,B*树索引是高度平衡的(Height Balanced)。另外一个术语是分支层数(Blevel),他等于Height-1。

B*树索引子类:
1)反向键索引
反向键索引是一种将索引键‘反转’的B*树索引,通过把键‘反转’,将本来连续的键值变得非常‘离散’,这些本来应该放在一个索引数据块上的连续键值(一般有序列或者时间戳产生)会被分散到不同的索引块上,从而避免索引块争用的问题。
2)降序索引
3)压缩键索引
   B*树索引的压缩只能应用于复合索引。压缩键复合索引(Compressed Key Index)的基本概念是:把每个索引键条目分解为两个部分:前缀(Prefix)和后缀(Postfix)。前缀是指复合索引中具有大量重复值的部分,余下的索引条目中唯一的部分就是后缀。
压缩键索引不仅能起到节约存储空间的作用,而且还能有效调高DML操作的效率。但是,需要注意的是:如果你的系统是一个CPU繁忙的系统,那么再使用压缩键索引只能适得其反,这会减慢你的处理速度(因为压缩键索引的数据结构更加复杂,他会额外增加CPU的工作量)。如果你的系统I/O比较繁忙,那么使用压缩键索引会加快处理速度。所以,压缩键使用与否一定要视你的系统实际情况而定。
总结:
a,压缩索引使得索引变小,因而能加速数据的检索
b,一定要考虑复合索引中各列的顺序,把重复值较多的列放在索引前部(前缀)
c,在并发性较高的系统中,压缩键索引会潜在的锁住更多的行数据,从而导致系统的DML性能较差,因此,建议在高并发性的系统中不要使用压缩索引

2,位图索引(Bitmap Index)
   位图索引的目的是提供一个指向所给键值对应数据行的指针(RowID)。在普通的索引中,这是通过存储每一个键值对应数据行的ROWID来实现的,通常索引条目和数据行之间存在着一种一对一的关系:一个索引条目就指向一行。而对于位图索引,他使用键值的位图来取代普通索引的ROWID列表,一个位图索引条目可能会指向多行数据。位图索引适用于高度重复且通常只读的数据表。在OLTP系统中,由于存在着并发性的性能问题,所以不能考虑使用位图索引。而以‘只读’为主要特征的Data Warehouse/MIS/BI/OLAP应用是位图索引的首选。

使用位图索引的几个条件:
1,一般来说,位图对于低基数的单列(single-column indexs with low cardinality)索引比较有效,低基数列是指该列仅有少数不同的值。
2,位图索引在‘只读’(Read-only)或以读为主的低基数环境下会比B*树索引快

在一个数据仓库/MIS/BI等OLAP型应用系统中,合理的使用尽可能多的位图索引是非常有用的,但是在写密集型的OLTP型应用中,位图索引是极不合适的。

3,基于函数的索引(Function Based Index)
   基于函数的索引就是你可以在表字段上创建基于函数或者表达式的索引,他能有效提高where子句中含有函数的SQL语句的性能。他计算函数或者表达式的值,并把得到的值存储在索引中,然而,当Oracle在表上处理insert或则update语句的时候,他需要在维护基于函数的索引时额外增加了函数计算步骤,因此,可能会造成些微的性能下降。


聚簇索引和非聚簇索引的根本区别是表记录的排列顺序和索引的排列顺序是否一致。









分享到:
评论

相关推荐

    Oracle索引介绍.pdf

    【Oracle索引介绍】 在数据库管理系统中,索引是一种至关重要的数据结构,它极大地提高了数据检索的速度。Oracle数据库,作为一款广泛使用的RDBMS(关系型数据库管理系统),同样利用索引来优化查询性能。本篇文章...

    oracle索引介绍

    ### Oracle索引介绍 在数据库管理系统(DBMS)中,索引是提高数据检索速度的重要工具之一。Oracle作为一款广泛使用的数据库系统,在索引管理方面提供了丰富的功能和灵活性。本文将详细介绍Oracle中的普通索引与组合...

    ORACLE索引介绍与高性能SQL优化

    Oracle数据库是目前最流行的企业级数据库之一,它提供了丰富的数据管理功能,其中包括索引技术。索引是数据库中一种重要的辅助结构,它可以帮助加快数据检索速度,优化SQL性能。在处理大量的数据时,索引的作用尤其...

    ORACLE索引介绍与高性能SQL优化.pdf

    Oracle索引是数据库管理系统Oracle中的一种重要数据结构,它的主要作用是提高数据查询的效率,减少I/O操作,以及在某些情况下消除磁盘排序。Oracle使用B*树(B星树)作为其主要的索引数据结构,无论是非唯一索引还是...

    oracle索引与分区索引介绍

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

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

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

    oracle分区与索引

    #### 二、Oracle 索引介绍 索引是用于快速查找表中数据的一种数据结构。Oracle提供了多种类型的索引,每种类型都有其适用场景。 ##### 1. 常见索引类型 - **B树索引**:最常见的索引类型,适用于各种查询场景。 -...

    Oracle 索引 使用方法

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

    oracle索引,常见索引问题

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

    ORACLE索引详解及SQL优化

    本文将深入探讨Oracle索引的原理、创建方法,并结合SQL优化策略,帮助你提升数据库查询速度,降低资源消耗。 首先,我们要理解索引的基本概念。在数据库中,索引类似于书籍的目录,它为数据提供快速访问的途径。...

    Oracle索引优化相关

    ### Oracle索引优化相关知识点详解 #### 一、基本索引概念 在Oracle数据库中,索引是提高数据检索速度的重要工具。通过查询`DBA_INDEXES`视图,可以获取到当前数据库中所有表的所有索引信息。需要注意的是,如果...

    Oracle索引机制分析

    总的来说,Oracle索引机制的深入理解对于数据库性能调优、查询优化和系统设计都具有重要意义。正确使用索引可以显著提高查询速度,降低响应时间,提升用户体验,但同时也需要平衡索引对写操作的影响,以确保系统的...

    Oracle索引分析与比较

    Oracle 索引是数据库管理系统中提升数据查询速度的关键组件,尤其在大型企业级应用中,选择合适的索引类型对于数据库性能至关重要。本篇文章将深入探讨Oracle中的B*Tree索引、反向索引、降序索引、位图索引和函数...

    oracle索引

    oracle的索引,非常适合初学者,介绍索引的分类,如何创建,修改等

    oracle 索引的原理

    oracle 索引的原理原理深入理解!

    oracle索引被限制的一些情况

    Oracle索引被限制的一些情况 Oracle索引是关系数据库管理系统中用于提高查询效率的一种机制,但是索引的使用也存在一些限制。本文将详细介绍一些常见的限制情况,帮助开发人员更好地使用索引,提高查询效率。 限制...

    oracle约束和索引笔记

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

    数据库 创建索引 sql oracle

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

    oracle索引类型及扫描方式大整理new

    ### Oracle索引类型详解 #### 一、B\*Tree索引:数据检索的基石 在Oracle数据库中,B\*Tree索引是最常见的索引结构,也是默认创建的索引类型。它基于二叉树原理,由分支块(branch block)和叶块(leaf block)构成,...

    Oracle索引优化

    Oracle索引优化是数据库性能调优的关键环节,它关乎到数据检索速度和整体系统的效率。在Oracle数据库中,索引的种类繁多,包括B*Tree索引、反向索引、降序索引、位图索引和函数索引等。理解并正确使用这些索引类型...

Global site tag (gtag.js) - Google Analytics