前言
众所周知建立索引是为了提高数据库查询效率。正解的索引确实能够数倍的提高数据库查询效率,但一个错误的索引将会把数据库拖慢,甚至拖死。
本文意在探讨如何选择索引类型。
正文
Oracle常用的有两种索引类型:B树索引和位图索引。
一、 B树索引
B树索引:B树索引是最常用的索引,它的存储结构类似于书的目录索引结构,有分支节点和叶子节点,分支节点相当于书的大目录,叶子节点相当于具体到页的索引。B树索引是oracle数据库的默认索引类型。
(B树索引结构图)
B树索引适用对象:
(1) 适合高基数的列(唯一值多);
(2) 适合与大量的增、删、改(OLTP);
(3) 不能用包含OR操作符的查询;
什么时候不适合创建B树索引:引用一下oracle官方文档
Where B-Trees Should Not Be Created
Several situations are worth noting where you should not create B-Tree indexes on columns. These cases include columns which:
§ Have only a few distinct values in their domains. For example, a Type column that has only four distinct values (A, B, C, and D). The index would be said to have "low selectivity." If you have an Oracle database, then these columns of low selectivity are ideal candidates for Bitmap indexes.// 只有几个不同的值供选择。例如,一个“类型”列中,只有四个不同的值(A,B,C,和D)。该索引是一个低效的选择。如果你有一个Oracle数据库,那么为这些选择范围小的的列建立位图索引是更好的选择。
§ Occur in WHERE clauses but within functions other than MIN or MAX.//当在where 条件中使用了除了MIN和MAX以外的函数。
Indexes in these cases waste space and slow down the load process.
小结:
B树索引经过大量的插入删除操作以后一个是容易使树不平衡,再一个是删除后空间不回收。所以定期重建索引非常有必要。
二、 位图索引
位图索引:
(位图索引结构图)
位图索引优点:
(1) 用一个位来表示一个索引的键值,节省了存储空间;
(2) 对and,or或=的查询条件,位图索引查询效率很高,计算机善于处理0,1数据。
什么时候适合使用位图索引:引用一下oracle官方文档
Candidates for Bitmap Indexes
Bitmap indexes are most advantageous whenever the cardinality of the index is less than one percent, or lowly-selective. This criterion is nearly the opposite of the guideline for B-Tree indexes.
Look for cases where:
§ A query constrains multiple columns which have few distinct values in their domains (large number of duplicate values).// 一个查询条件包含多个列,并且要创建索引的列只有几个不同的值(拥有大量重复值)。
§ A large number of rows satisfy the constraints on these columns.//大量的数据符合这些列上的约束条件。
§ Bitmap indexes have been created on some or all of these columns. //位图索引可以创建在一个、多个或全部列上。
§ The referenced table contains a large number of rows. //被引用的表包含了非常多的行。
注意:
CAUTION: Bitmap indexes should be used only for static tables and are not suited for highly volatile tables in online transaction processing systems.//位图索引只能用在相对稳定的表,不适合用在表数据频繁变化的联机系统中。
什么时候不适合创建位图树索引:
(1) 频繁进行插入或更新的表;
(2) 列值很多,可选范围很大的表;
- 大小: 48.5 KB
- 大小: 90.3 KB
分享到:
相关推荐
- **位图索引(Bitmap Index)**: 适合于在含有大量重复值的列上,尤其是在进行多列组合查询时,将多个位图索引合并进行快速查找。 - **函数索引(Function-Based Index)**: 允许基于函数的结果创建索引,使得对...
Oracle支持多种类型的索引,包括B树索引、位图索引、函数索引和唯一索引等。B树索引是最常见的索引类型,适用于大部分场景,其结构使得查找、插入和删除操作的时间复杂度较低。位图索引则适合于值分布稀疏的列,例如...
本篇文章将深入探讨Oracle索引的学习,重点关注索引的原理、类型、优缺点以及如何使用和分析执行计划。 首先,理解索引的基本概念。索引是一种特殊的数据结构,它存储在表空间中,用于加速对表数据的访问。当执行...
索引类型的选择也非常重要,如B树索引、位图索引、全文索引等,每种类型都有其适用的场景。例如,位图索引适合于在低基数(unique values比例低)的列上,而全文索引则适用于文本搜索。 "iTelluro.Tools.SqlIndex...
在Oracle数据库中,索引分为B树索引、位图索引、函数索引等多种类型,每种都有其特定的应用场景和优缺点。 二、B树索引 B树索引是最常见的索引类型,适用于全值匹配查询。在Oracle中,B树索引由一个或多个索引块...
创建和管理索引时,需要注意索引的类型(如分区或非分区,B树或位图索引),以及是否需要使用唯一索引来保证数据的唯一性。此外,优化索引策略包括选择合适的数据类型,避免在索引列上使用函数,以及适时使用覆盖...
本篇文章将深入探讨Oracle中的B*Tree索引、反向索引、降序索引、位图索引和函数索引。 1. **B*Tree索引**: - B*Tree索引是Oracle中最常见的索引类型,其结构类似于二叉树,可以高效地处理高基数数据列,即具有...
Oracle支持多种类型的索引,包括B树索引、位图索引、函数索引和唯一索引等。其中,B树索引是最常见的一种,它通过分层结构快速定位数据行。位图索引则适合于低基数(即某个字段值较少)的列,通过位图方式存储,节省...
此外,还有其他类型的索引如位图索引、散列索引等,但B树索引因其高效性而被广泛使用。 #### 二、索引结构与存储 1. **块(Block)**:这是数据库中最基本的存储单元,Oracle数据库中的每个块都有固定的大小,这个...
在Oracle数据库中,常见的索引类型包括B*Tree索引、反向索引、降序索引、位图索引、函数索引以及interMedia全文索引。B*Tree索引是最常见的一种,适用于大部分常规查询场景;反向索引则主要用于长文本字段,降低存储...
本文将深入探讨Oracle数据库中的索引优化原则和方法,这些原则和方法同样适用于其他数据库系统。让我们一起领略"SQL索引降龙十八掌"的精髓。 一、了解索引 1. 索引类型: - B树索引:最常见的索引类型,适用于等值...
本文将深入探讨B树索引和位图索引的特性、适用场景以及如何选择合适的索引类型。 B树索引是一种最常见的索引类型,尤其适合高基数(high-cardinality)的列,即具有大量不同值的列。B树索引通过分层结构存储数据,...
位图索引适用于列值较少的情况,它为每个可能的列值创建一个位图,使用位元表示对应行是否包含该值。位图索引能够节省空间,减少对数据块的访问次数。 3. 索引的创建与查询优化 在进行数据库查询优化前,通常需要...
Oracle提供了多种类型的索引,包括B树索引、位图索引、函数索引等。B树索引是最常见的,适用于大部分查询场景,能快速定位单个或多个列。位图索引适合于多值字段,例如用于性别或状态这样的分类数据。函数索引允许对...
Oracle支持多种类型的索引,包括B树索引、位图索引、函数索引和唯一性索引等。B树索引是最常见的,适用于大部分查询场景,它以排序的数据结构存储键值。位图索引适合于低基数(即唯一值较少)的列,例如性别或是否...
《Oracle与MySQL数据库索引设计与优化》这本书深入探讨了两个主流关系型数据库管理系统——Oracle和MySQL中的索引设计和优化策略。索引是数据库性能的关键因素,它们能够加速数据检索,提高系统效率,尤其在大数据量...
本文将详细介绍Oracle数据库中的六种常见索引类型:B*Tree索引、反向索引、降序索引、位图索引、函数索引以及InterMedia全文索引,并探讨它们各自的适用场景。 #### 二、索引类型详解 ##### 1. B*Tree索引 B*Tree...