`

B树索引和位图索引

 
阅读更多

前言

众所周知建立索引是为了提高数据库查询效率。正解的索引确实能够数倍的提高数据库查询效率,但一个错误的索引将会把数据库拖慢,甚至拖死。

本文意在探讨如何选择索引类型。

正文

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=的查询条件,位图索引查询效率很高,计算机善于处理01数据。

什么时候适合使用位图索引:引用一下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)        列值很多,可选范围很大的表;

分享到:
评论

相关推荐

    位图索引简单实验

    比较B*树索引和位图索引,位图索引更加适合重复值较大的值。

    Oracle自学(学习)材料 (共18章 偏理论一点)

    12 管理索引 目标 12-2 索引的分类 12-3 B 树索引 12-4 位图索引 12-6 B 树索引和位图索引的比较 12-7 创建普通 B 树索引 12-8 创建索引:指导 12-10 创建位图索引 12-11 修改索引的储存参数 12-12 分配和回收索引...

    数据库索引技术ppt

    文件记录的组织方式 索引技术基础 B+树索引 散列索引 位图索引 多维空间索引 Grid file, R-tree, kd-tree, quadtree, Space Filling Curve

    论文研究-基于位图索引和B 树的BLAST改进算法.pdf

    由于半结构文档如XML越来越广泛的应用,在数据库和信息检索领域,对半结构XML数据相似度的研究也变得尤为重要。给定XML文档集D和用户查询q,XML检索即是从D中查找出符合q的XML文档。为了有效地进行XML信息检索,提出...

    结合分段位图和B+树的云数据索引机制研究 (2016年)

    针对位图索引数据存储空间大、检索效率低的问题,提出了一种结合分段位图和B▲+△树的云数据索引机制(BBI)。BBI在索引创建时按照一定的基数对元组数据进行分段,以段为单位建立位图索引,索引数据量的决定因子由...

    ORACLE检查找出损坏索引(Corrupt Indexes)的方法详解

    索引 索引与表一样,也属于段...从物理上说,索引通常可以分为:分区和非分区索引、常规B树索引、位图(bitmap)索引、翻转(reverse)索引等。其中,B树索引属于最常见的索引。 引言 本文主要给大家介绍了关于ORAC

    CcoWzh#Interview-Of-Programmer#MySQL索引原理1

    MySQL索引原理查找算法:二叉查找树BitMap位图索引分类主键索引唯一索引普通索引全文索引索引原理解析B+树聚集索引和非聚集索引建立索引创建表时指定组合索引

    oracle 三种索引

    oracle 三种索引的简单描述,位图、B树、全文索引。

    oracle使用索引与不使用索引的性能详析

    位图索引也是如此,仅仅只是是叶子节点不同B*数索引; 索引由根节点、分支节点和叶子节点组成。上级索引块包括下级索引块的索引数据,叶节点包括索引数据和确定行实际位置的rowid。 使用索引的目的: 加快查询速度 ...

    Greenplum数据库架构.pdf

    PL/Perl,PL/PHP,PL/Python,PL/Ruby, PL/sh,PL/Tcl,PL/Scheme 索引 表达式索引 位图索引 B树索引 Greenplum数据库 基于PostgreSQL 8.2.14 相同的客户端功能 增加支持并行处理的技术 增加支持数据仓库和BI的特性...

    ORACLE教材

    B树索引(默认) 位图索引 函数索引 视图 序列 利用OEM操作 第九章:备份与恢复 脱机备份与恢复 联机备份与恢复 逻辑备份与恢复 第十章:sqlplus基础 设置SQL*PLUS的运行环境 格式化查询命令 第十一...

    关系型数据库性能体系设计和效率提升.docx

    5.1.3 B树索引、位图索引与函数索引 15 5.2 命名规范 15 5.3 索引设计规范 15 5.3.1 指定表空间规范 16 5.3.2 主键索引的规范 16 5.3.3 唯一约束索引的规范 17 5.3.4 外键列索引的规范 17 5.3.5 复合索引的规范 17 ...

    数据库系统概论chp3-2.pptx

    关系数据库管理系统中常见索引: 顺序文件上的索引 B+树索引 散列(hash)索引 位图索引 特点: B+树索引具有动态平衡的优点 HASH索引具有查找速度快的特点 数据库系统概论chp3-2全文共66页,当前为第6页。...

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

    1. 层次结构模型: 层次结构模型实质上是一种有根结点的定向有序树,IMS(Information Manage-mentSystem)是其典型代表。 2. 网状结构模型:按照网状数据结构建立的数据库系统称为网状数据库系统,其典型代表是DBTG...

    数据库系统实现

    5.4.4 位图索引的管理 习题 5.5 小结 5.6 参考文献 第6章 查询执行 6.1 一种查询代数 6.1.1 并、交和差 6.1.2 选择操作符 6.1.3 投影操作符 6.1.4 关系的积 6.1.5 连接 6.1.6 消除重复 ...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    11.2.4 什么情况下应该使用B*树索引? 437 11.2.5 B*树小结 448 11.3 位图索引 448 11.3.1 什么情况下应该使用位图索引? 449 11.3.2 位图联结索引 453 11.3.3 位图索引小结 455 11.4 基于函数的索引 456 ...

    论文研究-结合SVM与DS证据理论的信息融合分类方法.pdf

    针对BLAST算法在查找命中的过程中需要遍历数据库造成计算资源消耗的问题,提出了基于位图索引和B 树的数据存储方式以加快数据的检索。改进算法利用位图索引的原理建立数据库的单词-位向量表,并对这个表使用B 树再次...

    Oracle 10g应用指导

    索引,包括B树索引、基于函数的索引、位图索引、反向索引、降序索引、压缩索引等的使用方法及其适用情形等。在案例精讲中,对表压缩、约束的使能与失能、表的层次结构查询、防止删除表及对象、提取创建外键约束的...

Global site tag (gtag.js) - Google Analytics