`
liwei888
  • 浏览: 94425 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

正确的理解数据库索引

阅读更多

索引感念解析

     数据库的索引(index)类似于书的目录,目录使读者不必翻阅整本书就能迅速地找到所需要的内容。索引是一种与表相关的可选的方案对象。通过在表中的一列或多列上创建索引,就能够为数据的检索提供快速的存取路径,减少查询时硬盘I/O操作,加快数据的检索速度。目录和索引之所以能提高查询速度,是因为他们是按查询条件存储数据的,数据量少而且排列有序,便于采用数学方法进行快速定位。另外还提供了一个执行内容的指针,即书的页码或记录的ROWID。索引的分类主要有以下几种:

1、标准索引(B_tree index B树索引)

     B树索引是Oracle中最常用的一种索引,在使用create index语句创建索引时。默认创建的就是B树索引;B树索引可以有单列索引或复合索引、唯一索引和非唯一索引。B树索引其实就是一种利用二叉树的结构来存储索引的;B树索引能够适应多种查询条件,包括使用“=”的精确匹配、使用like的模糊匹配,以及“《”和“》”的比较条件。

    例如:create index bmidx_emp_job on em(job)

2、位图索引(bitmap index)

    在介绍位图索引之前,首先引入基数的概念。基数是指某个列可能拥有的不重复数值的个数。比如sex列的基数为2(性别只能是男女),marital_status列的基数为3(婚姻状况只能是未婚、已婚或离异)。在B树索引中对于一些基数很小的列,这种处理方式的效率可能很低。这种情况下比较适合创建位图索引;

     例如:create bitmap index bmidx_emp_job on em(job)

       特殊说明:位图索引由于其特殊的结构,操作某个记录的时候,会锁住某一组数据,而不是象普通索引一样仅锁住一行数据,因此位图索引不适合并发访问十分高的OLTP系统,其副作用是会导致锁等待时间大幅度增加,甚至导致死锁频繁出现

3、函数索引(funciton index)

  在Oracle中不仅能够直接对表中的列创建索引,还可以对包含列的函数或表达式来创建索引,这种索引称为“函数索引”。根据函数或表达式的结果的基数情况,函数索引即可以采用普通的B树索引,也可以采用位图索引。

   特殊说明:由于函数索引实际上存储了预先计算过的值,所以不再像以前那样,为表中的每条记录都计算一次where条件。除此之外,当表中数据更新是,还需要自动更新函数索引。

   例如:create index funidx_salcomm on emp(sal+comm+sal*0.2);

 

分享到:
评论

相关推荐

    数据库索引设计和优化

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

    数据库 索引及优化

    ### 数据库索引及优化详解 #### 一、数据库索引的重要性 数据库索引就像是图书中的目录,能够显著提升查询速度。例如,在执行查询 `SELECT * ...通过对索引的理解和正确应用,可以有效提升系统的响应速度和整体性能。

    书籍:Oracle与MySQL数据库索引设计与优化

    《Oracle与MySQL数据库索引设计与优化》这本书深入探讨了两个主流关系型数据库管理系统——Oracle和MySQL中的索引设计和优化策略。索引是数据库性能的关键因素,它们能够加速数据检索,提高系统效率,尤其在大数据量...

    关于数据库索引的理解(实践总结)

    数据库索引是数据库管理系统中用于提高查询速度...总的来说,理解和掌握数据库索引的特性,能够帮助我们设计出更高效的数据库架构,提高查询性能,减少不必要的资源消耗,这对于任何IT专业人员来说都是至关重要的技能。

    java 建立数据库文件索引

    在Java编程环境中,创建数据库文件索引是一项...以上这些知识点是实现“java 建立数据库文件索引”的基础,通过合理地组合和应用这些技术,你可以构建一个功能完善的系统,支持文件目录的数据库索引创建和FTP远程下载。

    基于Oracle数据库索引的查询优化研究.pdf

    【Oracle数据库索引的查询优化研究】 ...本文的研究成果对于理解Oracle数据库索引的重要性以及如何有效地利用索引进行查询优化提供了理论依据和实践指导,为相关领域的技术人员提供了有价值的参考。

    基于SQL Server数据库索引的创建与优化分析.pdf

    "基于SQL Server数据库索引的创建与优化分析" 本文主要介绍了SQL Server数据库索引的创建和优化分析。索引是数据库管理系统中负责排 序的数据结构,可以快速找到所要检索数据的物理存储地址,以便完成读取数据和...

    数据库索引创建建议

    ### 数据库索引创建建议 #### 一、深入理解索引结构 索引在数据库管理中扮演着极其重要的角色,特别是在处理大量数据时。合理的索引设计能够显著提高查询性能,减少系统的响应时间。本文主要探讨数据库中的两种...

    数据库索引技术的研究与应用.pdf

    ### 数据库索引技术的研究与应用 #### 一、引言 随着信息技术的快速发展和互联网技术的高度普及,数据库中存储的数据量急剧增加,数据格式也变得越来越复杂多样。在这种背景下,如何有效地管理和检索这些海量数据...

    关于lucene建立数据库索引的更新说明

    在本文中,我们将探讨如何使用Lucene建立数据库索引,并分享一些在实践过程中的经验和教训。Lucene是一个高性能、全文本搜索库,广泛用于构建搜索引擎。在创建索引时,需要注意以下关键点: 1. **资料的准确性**:...

    数据库性能调优技术--索引调优

    通过以上案例分析可以看出,正确地设计和使用索引是数据库性能调优的关键。在实际操作中,还需要结合具体的应用场景和数据库特性来进行细致调整,以达到最佳的性能效果。 综上所述,索引调优是一个细致且复杂的过程...

    数据库索引 分区 查询优化.ppt

    数据库索引、分区和查询优化是数据库管理中的关键概念,对于提升数据检索速度和系统性能至关重要。以下将详细解释这些概念及其应用。...正确地理解和应用这些技术,能够显著提升数据库的效率,满足业务需求。

    数据库索引PPT学习教案.pptx

    数据库索引是数据库管理系统中用于加速数据检索的关键结构。索引的存在显著提升了查询速度,尤其在处理大量数据时。在数据库设计中,选择正确的表类型和数据类型对于优化查询性能至关重要。 MySQL提供了多种存储...

    mysql数据库以及索引详解.pptx

    - **定义**:B-Tree是一种平衡的多路搜索树,通常用于实现数据库索引。 - **特性**: - 每个节点最多拥有m个子树。 - 根节点最少有2个子树。 - 分支节点最少拥有m/2棵子树。 - 所有叶节点在同一层,每个节点最多...

    创建数据库表与索引实验.docx

    **实验描述:** 本次实验旨在让学生掌握如何在数据库中创建表和索引,同时理解并实践数据完整性的重要性。 **实验目标:** - 掌握表和索引的创建方法及其结构修改技巧。 - 了解并建立表之间的逻辑关系。 - 实践...

    数据库性能调优技术1索引调优.pdf

    2. 对于单表查询,使用多个索引进行过滤的假设是不正确的。当使用一个索引进行过滤后得到临时结果集,这些结果集没有索引,因此无法使用另一个索引进一步过滤。实际上,数据库会通过全表扫描来完成剩余的过滤。 ...

    索引的正确使用

    本文将深入探讨如何正确使用索引,并通过具体案例分析来帮助读者更好地理解索引的作用及其最佳实践。 #### 一、索引的重要性 索引类似于书籍的目录,可以帮助数据库快速定位数据的位置,从而加快数据检索的速度。...

    数据库原理实验九 索引.doc

    【数据库索引】 数据库索引是数据库管理系统中用于加速数据检索的数据结构,它能显著提高查询效率。索引可以类比于书籍的目录,通过索引,...通过这样的实践,可以深入理解数据库索引的重要性和数据库安全的管理方式。

    MySQL数据库中关于索引的研究.pdf

    本文主要探讨了MySQL数据库索引的原理、类型和优化方法。作者通过实例分析,展示了索引在解决数据库性能问题上的重要作用。 首先,作者指出在数据库应用系统中,查询操作通常比更新操作更为频繁,因此查询性能的...

    数据库优化之索引基础知识

    总之,掌握数据库的索引基础知识,特别是与数据页相关的内容,有助于深入理解数据库的工作原理,从而在数据库设计和优化中做出明智的决策。通过不断学习和实践,可以更好地利用索引来提升数据库的性能和响应速度。

Global site tag (gtag.js) - Google Analytics