前天去面试,自己天天用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索引技术在油田数据管理中的研究与应用.pdf
ORACLE SQL性能优化文档大全(包括所有sql索引方面知识),非常明朗清晰,初学者易懂,深入研究者也有很大帮助
基于Oracle数据库索引的查询优化研究.pdf
ORACLE数据库索引的设计与维护研究.pdf
Oracle分区表和分区索引在VLDB中的研究.pdf
Oracle数据库应用系统的性能优化是一项系统化的工程,涉及到数据库结构的各个方面。本文从B* 树索引入手, 分析了B* 树索引的结构及原理,阐明了如何正确合理地使用B* 树索引及其如何优化数据库系统的性能。
基于表结构及索引的Oracle查询优化研究.pdf
在系统分析了Oracle数据库索引特点的基础上, 要注意的问题进行了总结,进行了一些新的探索和尝试, 对如何使用SQL语句的索引对数据库进行优化的实现方法中 提出了Oracle数据库SQL优化的其它注意问题。
基于Oracle Spatial的四叉数索引调整研究.pdf
索引调整优化Oracle 9i工作性能的研究.pdf
Oracle B*树索引内部机制及其应用的研究.pdf
Oracle字段上建立并使用索引 29 用Windows脚本宿主自动化Oracle工具 31 进程结构和内存结构 32 Oracle监控数据库性能的SQL汇总 36 Oracle如何精确计算row的大小 38 PL/SQL编程 39 数据库的分组问题 41 oracle知识 42...
GIS的一个难点是实现空间数据和属性数据的一体化存储和管理,研究用Oracle Spatial技术来解决这个问题。在确定了采用对象—关系模型来存储GIS数据后,比较了空间数据的两种导入方式,在此基础上,选用EasyLoader工具...
本资料是讲解oracle分区表及分区索引技术资料,也许对大家有用.
本书作者从事oracle dba教学研究多年,拥有oracle最高等级ocm认证。作者在本书中,将他毕生所学传授给已担任dba工作者的数据库管理人员,或是想要往这个方面发展的初学者。书中涵盖一套最完整、且最具逻辑性的知识...
CLUSTER_FACTOR是Oracle索引机制中一个很重要的参数,往往对Oracle执行计划的路径选择产生重大影响,现在网上关于这方面的文章较少,有限的几篇也语焉不详,甚至多有纰漏。本文以案例的形式对此进行深入浅出的剖析,...
如果你研究过Oracle Forms,使用过Application Server和Developer Suite来开发、配置部署form和report,并且曾经作为一名Oracle DBA,经历过许多管理和维护的工作如patching和cloning的话,那么你就已经能够掌握了...