`
eriol
  • 浏览: 407962 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库索引实现原理

    博客分类:
  • SQL
阅读更多

1.什么是索引?

 

索引类似于书的目录,主要用于提高查询效率。在按条件查询的时候,数据库会先查询索引,再通过索引找到相关的数据。因此,索引记录了对某个关键词指定到不同的文件,或者文件里的不同位置,当然索引自身也是通过文件来保存的。

 

 

2.索引的类型

 

有两种基本的索引结构,即索引文件的保存方式。一个是顺序索引,就是根据值的顺序排序的(这个文件里面的值就是为其建索引的字段值,它被顺序地放在索引文件里面);另外一个是散列索引,就是将值平均分配到若干散列桶中,通过散列函数定位的。

 

2.1 顺序索引

  • 如果被索引的字段本身按照一定的顺序排序,那么这种索引叫做聚集索引。否则叫做非聚集索引。
  • 如果被索引的字段的每个值都有一个索引与其对应,那么这种索引叫做稠密索引,否则叫做稀疏索引。

顺序索引分为两类,单级索引(很少使用)和多级索引(通常是B+树,大量使用)。

  • 单级索引就是把所有的索引字段以及对应的文件位置按顺序一个个的排列出来,这种索引查找起来比较慢,因为是顺序存储的,可以使用二分查找法,但是总体来说效率不高,这种索引是最基础的索引,一般不用,ORACLE里面好像不支持这种索引。
  • 多级索引实际上就是在单级索引之上再加索引(稀疏索引),也就是指向索引的索引,二级索引上面还可以再加三级索引,可以不停的加,加到最后最上层只剩下一个节点(根节点),就成了一个树状结构了。

我们经常听到B+树就是这个概念,用这个树的目的和红黑树差不多,也是为了尽量保持树的平衡,当然红黑树是二叉树,但B+树就不是二叉树了,节点下面可以有多个子节点,数据库开发商会设置子节点数的一个最大值,这个值不会太小,所以B+树一般来说比较矮胖,而红黑树就比较瘦高了。

 

关于B+树的插入,删除,会涉及到一些算法以保持树的平衡,这里就不详述了。ORACLE的默认索引就是这种结构的。

如果经常需要同时对两个字段进行AND查询,那么使用两个单独索引不如建立一个复合索引,因为两个单独索引通常数据库只能使用其中一个,而使用复合索引因为索引本身就对应到两个字段上的,效率会有很大提高。

 

2.2 散列索引

 

第二种索引叫做散列索引,就是通过散列函数来定位的一种索引,不过很少有单独使用散列索引的,反而是散列文件组织用的比较多。

 

散列文件组织就是根据一个键通过散列计算把对应的记录都放到同一个槽中,这样的话相同的键值对应的记录就一定是放在同一个文件里了,也就减少了文件读取的次数,提高了效率。

 

散列索引就是根据对应键的散列码来找到最终的索引项的技术,其实和B树差不多,也就是一种索引之上的二级辅助索引,我理解散列索引都是二级或更高级的稀疏索引,否则桶就太多了,效率也不会很高。

 

2.3 位图索引

 

位图索引是一种针对多个字段的简单查询设计一种特殊的索引,适用范围比较小,只适用于字段值固定并且值的种类很少的情况,比如性别,只能有男和女,或者级别,状态等等,并且只有在同时对多个这样的字段查询时才能体现出位图的优势。

位图的基本思想就是对每一个条件都用0或者1来表示,如有5条记录,性别分别是男,女,男,男,女,那么如果使用位图索引就会建立两个位图,对应男的10110和对应女的01001,这样做有什么好处呢,就是如果同时对多个这种类型的字段进行and或or查询时,可以使用按位与和按位或来直接得到结果了。

 

 

总结:

 

B+树最常用,性能也不差,用于范围查询和单值查询都可以。特别是范围查询,只有用B+树这种顺序索引才行。

HASH的如果只是对单值查询的话速度会比B+树快一点,但是ORACLE好像不支持HASH索引,只支持HASH表空间。

位图的使用情况很局限,只有很少的情况才能用,一定要确定真正适合使用这种索引才用(值的类型很少并且需要复合查询),否则建立一大堆位图就一点意义都没有了。

 

 

原文地址:http://hi.baidu.com/phpasapjsp/blog/item/1ac3ad3d5b81070dbaa1670b.html

分享到:
评论

相关推荐

    数据库索引的实现原理

    数据库索引是数据库管理系统中用于加速数据查询的关键技术。它是一种特殊的数据结构,通常基于B树或其变种B+树实现,目的是提供快速的数据定位,使得查询操作可以在较短的时间内完成。索引并不只是单纯地存储数据,...

    数据库索引设计和优化

    数据库索引设计与优化是数据库管理系统中至关重要的一个环节,它直接影响到数据查询...通过学习《数据库索引设计与优化》这样的专业书籍,我们可以深入理解这些原理,并将其应用于实际工作,提升数据库系统的整体效能。

    48丨B+树:MySQL数据库索引是如何实现的?1

    【MySQL数据库索引实现原理——B+树解析】 在数据库领域,MySQL作为主流的数据库管理系统,其高效的数据存取机制离不开索引的支撑。索引是数据库系统优化查询速度的关键,它通过特定的数据结构实现快速查找、插入和...

    数据库索引那些事(数据库索引原理)

    "数据库索引那些事(数据库索引原理)" 数据库索引是数据库的一种对象,它保存数据库表中一列或多列组合的排序。索引提供指向存储在表的指定列中的数据值的指针,然后根据指定的排序顺序对这些指针排序。数据库使用...

    详解SQL数据库索引原理

    在深入探讨SQL数据库索引原理之前,我们先来理解一下索引的基本概念。索引,类似于书籍中的目录,是数据库中一种特殊的数据结构,用于快速定位数据。它并不存储实际的数据,而是存储了数据行的位置信息,使得数据库...

    索引内部原理.pdf

    Oracle数据库索引实现原理是数据库管理与优化的重要内容,理解这些原理可以帮助数据库管理员(DBA)更好地管理数据,提升查询效率,以及进行必要的维护操作。B-Tree是Oracle中最常用的索引类型,其核心是维护数据的...

    数据库实现原理 数据库

    根据提供的信息,我们可以推断出该文档主要涉及的是IBM Informix数据库系统的技术细节与实现原理。下面将基于这些信息展开,详细介绍与“数据库实现原理”相关的知识点。 ### 一、IBM Informix 概述 IBM Informix ...

    数据库中索引原理

    ### 数据库中索引原理深度解析 索引是数据库中用于加速数据检索的重要结构,它类似于书籍中的目录,能够帮助数据库管理系统快速定位和提取数据。本文将深入探讨数据库中的索引原理,包括聚集索引与非聚集索引的概念...

    数据库索引原理-个人开发体验总结

    数据库索引原理是数据库系统中的关键技术之一,它对数据检索速度和系统性能有着重大影响。在个人开发过程中,深入理解并应用这些原理至关重要。本文将围绕数据库中的索引概念、聚族索引、主键以及查询优化进行详述。...

    数据库原理与实现系列(1 of 8) - 数据库系统实现(第二版) PDF

    数据库原理与实现系列(1 of 8) - 数据库系统实现(第...-Concepts and Techniques(1c,Morgan Kaufmann,1993), 数据库索引设计与优化, 大规模分布式存储系统:原理解析与架构实战, Foundations of Databases (数据库基础)

    数据库系统实现 数据库系统实现

    在学习数据库系统实现时,理解这些基本概念和技术至关重要,而这本书籍将带领读者深入到数据库系统的内部,揭示这些机制的工作原理。通过阅读《数据库系统实现》,读者不仅可以了解数据库设计的理论,还能掌握实际...

    0113-(每特教育&每特学院&蚂蚁课堂)-4期-数据库技术-高性能MySQL索引实现原理之实战操作索引.zip

    本课程“0113-(每特教育&每特学院&蚂蚁课堂)-4期-数据库技术-高性能MySQL索引实现原理之实战操作索引”聚焦于MySQL的索引实现原理和实战应用,旨在提升数据库查询效率,从而提高整体系统性能。 首先,我们要理解...

    浅谈数据库索引的作用及原理

    本文将深入探讨数据库索引的作用、原理以及何时适合创建索引。 首先,索引的作用在于通过减少全表扫描的次数,显著加快查询速度。在没有索引的情况下,数据库在执行SQL查询时,通常需要遍历整个表来寻找符合搜索...

    MySQL Innodb 索引原理详解

    ### MySQL Innodb 索引原理...通过对比不同的树形结构,我们了解到B+树为何成为数据库索引的理想选择。此外,还讨论了InnoDB与MyISAM的主要差异,以及索引的插入和删除操作。对于理解和优化MySQL数据库的性能至关重要。

    数据库原理 数据库 数据库原理 数据库原理

    9. **性能优化**:通过索引、查询优化、数据库重构和分区等手段提高数据库的查询速度和整体性能。 10. **数据库管理系统(DBMS)**:实现上述功能的软件系统,如Oracle、MySQL、SQL Server、PostgreSQL等。 ...

    数据库系统实现(第二版)

    4. 存储结构:数据库存储结构是实现的关键,包括B树、B+树和哈希索引等数据结构的原理和应用,以及磁盘I/O优化。 5. 事务处理:事务是数据库操作的基本单元,确保数据的一致性和完整性。书中会涵盖ACID属性(原子性...

    数据库管理系统原理与设计3中文版及答案part4

    全书分为数据库基础、应用程序开发、存储与索引、查询评估、事务管理、数据库设计与调整、高级主题等七大部分,对数据库的设计与使用、数据库管理系统基本原理与实现技术,以及数据库研究的新进展做了详细论述。...

    数据库系统实现(第二版)_databasesystem_

    《数据库系统实现(第二版)》是Hector Garcia-Molina、Jeffrey D.Ullman和Jennifer Widom三位著名计算机科学家的著作,由杨冬青、吴愈青等学者翻译成中文版。这本书深入探讨了数据库系统的内部工作原理,是学习...

    数据库管理系统原理与设计3中文版及答案part1

    全书分为数据库基础、应用程序开发、存储与索引、查询评估、事务管理、数据库设计与调整、高级主题等七大部分,对数据库的设计与使用、数据库管理系统基本原理与实现技术,以及数据库研究的新进展做了详细论述。...

Global site tag (gtag.js) - Google Analytics