前天去面试,自己天天用oracle开发,面试官问了个B树索引概览,我尽然不知道。哎,被面试官打击,只是个开发的熟练工,不懂原理。我在想,我过来,又不是搞创新的,还不是开发项目吗。
后来在想想,原理还是要懂的,面试官会B视我们,自己技术也就停留在开发熟练工层上。
回来后,在网上查了一堆资料讲的太难理解,后来找到几个例子不错。哥就整理整理。
看技术书,很多明明很简单的,被人翻译了感觉很高深的样子,其实只要举些易懂的例子,
理解起来效果就好太多。下面是我自己收集的讲的比较好的例子。
B树索引,就是我们最常用的普通索引(传统索引)。
简单创建方式为:create index test_id_idx on test(id)。
下面用图解释下B-Tree索引:
①:从上往下,第一层为根节点,第二层为分支节点,第三层为叶子节点(包含了列值和rowid)。
rowid 参考 http://www.linuxidc.com/Linux/2013-03/80755.htm
②:当查找的时候,是这么查找的,比如要找到值11,就从跟节点开始,11在0-50中,指向分支节点最左边第一个框,就去分支节点最左边第一框中去找,发现11在11-19中指向叶子节点的左边第二个框,就去叶子节点左边第二个框去找11的值,于是找到两个11的值和响应的rowid。如果只查找索引列的值,就不用根据rowid去表中查找了,如果还要查找值11这行,其他列的值就得根据rowid去表里查找。(除了在同一聚簇中可能不唯一外,每条记录的rowid是唯一的)。
③:叶子节点还有个双向链表(如图)。在通过索引进行范围扫描时会起作用,比如要查找值10-19,如果当查找到值10的时候,不就会再从跟节点开始查找其他的值,而是根据本叶子节点链表的指向去查找其他的值。
---------------------------------------------------------------------------
oracle 位图索引的原理
例子
b-tree索引这样存高度重复的数据
男
男
男
男
女
女
对高度重复的数据 普通索引要反复存,
对于bitmap索引而言:
男 111100
女 000011
男和女的值只要存一次,而后面的位图只占几个字节, 要比btree 索引节约空间
相关推荐
Oracle 索引研究
Oracle 数据库索引优化方法探析是一项重要的研究方向,旨在提高 Oracle 数据库的查询效率和性能,减少资源消耗,提高用户体验。 Oracle 数据库管理员需要深刻理解 Oracle 机制,采用更加灵活的方法,有效进行索引...
在`ORACLE索引研究--rainnyzhong的博客.htm`中,可能涵盖了不同类型的索引(如B树、位图、函数索引)以及它们在不同场景下的应用。索引的创建、维护和使用策略对SQL查询的性能有直接影响。 2. **IN vs EXISTS**: ...
【Oracle数据库索引的查询优化研究】 在Oracle数据库系统中,查询优化是提升数据库性能的关键环节,其中,索引的合理构建与应用扮演着至关重要的角色。本文将深入探讨索引的概念、分类以及如何利用索引来优化查询...
Oracle索引技术在油田数据管理中扮演着至关重要的角色,它能够显著提升数据查询效率,减少服务器资源浪费,从而加速企业信息化进程。在油田的生产管理中,大量地质、勘探和开发数据需要快速准确地查询,传统的全表...
【Oracle数据库索引的设计与维护研究】 Oracle数据库作为一款广泛使用的商业关系型数据库管理系统,其性能优化的关键之一在于正确设计和维护索引。索引是一种特殊的数据结构,它加速了数据库查询过程,使得数据检索...
"Oracle分区表和分区索引在VLDB中的研究" 本文研究了Oracle分区表和分区索引在VLDB(Very Large Databases)中的应用。分区表和分区索引是数据库管理中的关键技术之一,是VLDB中一个重要的性能提升机制。通过分析一...
书中包含了大量的实验数据和案例研究,用以验证不同的索引管理和优化策略的有效性。例如,通过对各种索引结构的比较分析,可以帮助读者理解不同类型的索引在不同场景下的表现差异。 ##### 2. 实际应用场景 - **...
### Oracle数据库基于索引SQL优化方法的研究与实现 #### 一、引言 随着信息技术的发展,数据库管理系统(DBMS)在企业级应用中的地位越来越重要。Oracle数据库作为一种高性能的关系型数据库管理系统,在众多领域得到...
【Oracle 9i 索引调整优化】 Oracle 9i 是一款广泛使用的数据库管理系统,其性能优化至关... 索引调整优化Oracle 9i工作性能的研究[J]. 计算机工程与应用, 2005, 26(26): 174-177. 文献标识码:A 中图分类号:TP311
Oracle 11g引入了高级压缩技术,允许用户对表、索引和备份数据进行压缩,从而节省存储空间,同时保持高性能的查询处理。 4. **SecureFile LOBs** SecureFile LOB(Large Object)提供了一种更高效、安全的方式来...
Oracle B*树索引是数据库管理系统中用于快速查找数据的一种数据结构,尤其在Oracle数据库中扮演着...因此,深入理解Oracle索引的内部机制,结合具体业务场景,灵活运用各种索引策略,是确保数据库系统高效运行的关键。
本文主要探讨了基于Oracle Spatial的四叉数索引调整的研究,该主题对于优化空间数据库管理和地理信息系统(GIS)的性能至关重要。Oracle Spatial是Oracle数据库的一个扩展,专门用于处理和管理地理空间数据。文章以...
Oracle支持多种类型的索引,如B树索引、位图索引、函数索引等,选择合适的索引类型对于特定查询场景至关重要。同时,索引的维护也需要考虑,频繁的插入、删除和更新操作可能使索引变得碎片化,影响性能,适时的索引...
本文将基于提供的文档内容,深入探讨Oracle中的分区表及其索引技术。 #### 分区表的定义 分区表是指将一个大的物理表分割成多个较小的部分(即分区),这些部分可以独立管理,并存储在不同的位置。通过合理地设计...
### Oracle高级SQL调优:CLUSTER_FACTOR案例研究 #### 一、引言 在Oracle数据库管理与优化领域,CLUSTER_FACTOR(简称CF)是衡量索引性能的一个关键指标。它反映了索引条目与其对应的表数据之间物理位置的接近程度...
【arcsde for oracle 存储机制研究】 在Oracle地理数据库中,arcsde用于管理和存储GIS(地理信息系统)数据,其中包括矢量、栅格和属性数据。BLOB(Binary Large Object)是Oracle数据库用于存储大容量二进制数据的...
GIS的一个难点是实现空间数据和属性数据的一体化存储和管理,研究用Oracle Spatial技术来解决这个问题。在确定了采用对象—关系模型来存储GIS数据后,比较了空间数据的两种导入方式,在此基础上,选用EasyLoader工具...