`

聚族索引、非聚族索引、组合索引的含义和用途

阅读更多

一、什么是索引
索引可以理解为我们小时候使 的汉语字典的索引,如果想在字典中查找一个字,一页一页地翻字典查找是非常慢的,但如果使 字典的索引进行查询,很快就可以查到了。数据库的索引也是类似的。
数据库中的索引一般是按照B树来组织的,叶结点指向真正的数据,B树的定义我这里就不介绍了,有兴趣的话可以去翻翻数据结构的书。

二、聚族索引
在这里还是 字典来进行类比,一般来说汉语字典中有几种索引,如拼音、偏旁、笔画等。字典本身的组织也是排序的,我记得一般是按照拼音排序的。这里的拼音就是聚族索引。也就是说聚族索引的组织顺序和数据本身的组织顺序是一致的 ,这也解释了数据库中只能定义一个聚族索引的原因,因为数据本身只能按一种方式进行排序。
那聚族 索引有什么 特别的好处呢,这个好处就是在数据库中执行查找一批数据的语句会比较快,因为数据已经按照聚族索引排好序了,很少的io操作就可以将数据 从库中取出。好比你在字典中查找发音从从a到c的汉字,只需要查到a的开始页和c的结束页,中间的所有页都符合查询要求,不 再一页一页地查找。


图1 聚族索引

   三、非聚族索引
非聚族索引就好比字典里的偏旁、笔画索引, 索引组织顺序和数据组织顺序不一致 ,因此非聚族索引可以创建多个。当查找一条数据时,非聚族索引和聚族索引的效率相差不大,但查找一批数据(n)时,非聚族索引需要的io可能是聚族索引的n倍,因为非聚族索引需要一条一条地进行查找。


图2 非聚族索引

   四、组合索引
组合索引 在索引的key中保存了所有组成该 组合索引 的字段 ,但只按第一个字段进行排序 。 因为索引key中保存的内容增多,因此组合索引 需要的空间一般来说比单字段索引大。 组合索引 的好处是假如你的查询需要返回的数据字段都在 组合索引 的索引字 段中,数据库将不会访问数据页,而直接返回索引中的字段值,可以加快查询速度。假如你的查询不满足这个条件, 组合索引 就是没有意义的,反而浪费了存储空 间。

图3 组合索引

 最后出一道小题目,考考大家看懂没有:
假设表中一共有100条数据,索引的B树为三层,查询结果返回50条按照聚族索引排序的数据,不建索引查询、按照聚族索引查询、按照非聚族索引查询所需的io次数各是多少?

分享到:
评论

相关推荐

    MySQL索引分析和优化.pdf

    MySQL提供了多种类型的索引,每种类型的索引都有其独特的用途和特点: 1. **普通索引**:最基本且无唯一性限制的索引类型,可以通过多种方式创建。 - 创建索引:`CREATE INDEX <索引名> ON tablename (列名列表);`...

    2010计算机三级数据库经验谈:选择键和索引汇编.docx

    通常,对逻辑主键使用唯一组合索引,对系统键使用唯一非组合索引,对外键列使用非组合索引。然而,过度索引会导致存储空间浪费,因此需要权衡索引与数据库大小、读写操作的频率。 一些特定的字段不应被索引,例如...

    MySQL索引分析.pdf

    在使用索引时,需要合理设计和优化,避免过度索引和索引不足。过度索引可能导致插入、更新和删除操作变慢,因为每次操作都需要维护索引。另一方面,如果没有合适索引,查询性能可能会大幅下降,尤其是对于大数据量的...

    [三思笔记]全面学习分区表及分区索引.pdf

    分区表和分区索引是数据库管理系统中的重要概念,它们对于大型数据存储的高效管理和查询具有至关重要的作用。本文将深入探讨这两个主题,帮助你更好地理解它们的原理、用途以及实际应用。 1. 分区表(Partitioning...

    【MySQL】索引 (八).pdf

    MySQL中的索引可以根据用途和存储方式进行分类: 1. **主键索引**:针对表的主键创建的索引,默认自动创建,每个表只能有一个主键索引。 2. **唯一索引**:避免同一表中某列数据重复,可以创建多个唯一索引。 3. **...

    mysql高级部分--包含索引建立优化_函数_存储过程_触发器_及游标

    - **组合索引:** 基于多列创建的索引,可以包含连续或非连续的列。 **创建示例:** - 创建普通索引: ```sql CREATE INDEX index_name ON tbl_name (column_name); ``` - 创建组合索引: ```sql CREATE INDEX ...

    cnki 万方 维普 sci等各种索引介绍和技巧

    本篇将详细介绍这些索引的特点、用途以及使用技巧,以帮助你更好地进行论文检索和投稿。 一、CNKI(中国知网) CNKI是中国最全面的学术资源数据库之一,包含期刊论文、学位论文、会议论文、报纸文章等多种类型。它...

    jquery 获取当前元素的索引值

    这段代码的作用是在所有`<li>`元素上应用`.hover()`方法,这是一个组合了`mouseover`和`mouseout`事件的简写形式。当鼠标指针悬停在`<li>`元素上时,会触发内部的匿名函数,这个函数中调用了`.index()`方法。 `....

    简单介绍下MYSQL的索引类型

    单列索引和组合索引之间的主要区别在于,单列索引只针对一个列,而组合索引覆盖多个列。在优化查询性能时,选择正确的索引类型至关重要。例如,如果经常同时查询多个列,那么创建一个组合索引可能比单独创建单列索引...

    SQL server 教学课件 (8)

    根据不同的特性和用途,索引可以分为以下几类: 1. 聚集索引(Clustered Index):在聚集索引中,数据行的物理顺序与索引顺序是一致的。这意味着表中的数据页会按照索引的顺序存放,一个表只能有一个聚集索引。通常...

    c#索引器详解示例

    - 索引器不强制执行类型安全,因此在使用非整数索引时要特别小心。 8. **索引器的应用场景** - 自定义集合类,如链表、队列等。 - 处理复杂数据结构,如树或图。 - 实现类似于数据库查询的功能,允许按键查找...

    Mysql数据库设计标准

    5. **表和字段的备注**:添加备注以解释表和字段的用途和含义,增强可读性。 6. **数据保留策略**:对于统计表,应注明保留数据的时间,超出后移至历史库。 7. **索引限制**:每个表的索引不超过5个,单字段索引不...

    ISIS_元件库索引.pdf

    - 轴向引线电容:常见类型有聚丙烯和聚苯乙烯,适用于高频和低频应用。 - 陶瓷元片电容:小体积、高精度,常用于耦合和旁路电路。 - 解耦圆片电容:用于电源去耦,消除电源线上的噪声。 - 高温电解电容:能在...

    NC5.7数据字典

    3. **索引信息**:描述了哪些表和字段上有索引,是唯一索引还是非唯一索引,以及索引的创建方式(单列索引、组合索引等),这有助于优化查询性能。 4. **视图定义**:如果系统中存在视图,数据字典会提供视图的SQL...

    DWRESCR DWH SCHEMA帮助文档

    3. **字段(Field)**:字段是表中的最小数据单元,每个字段都有特定的含义和用途。在DWRESCR文档中,字段详细描述了它的业务含义、数据类型、精度、规模等因素,这有助于理解数据的意义和限制。 4. **键(Key)**...

    阿里数据库sql规范,个人学习使用

    - 组合索引中区分度高的字段应放在最左边,如`where a=? and b=?`,只需对`a`建立索引。 - 当存在非等号和等号混合条件时,等号条件的字段应放在索引最前列,如`where c>? and d=?`,索引应为`idx_d_c`。 遵循...

Global site tag (gtag.js) - Google Analytics