`

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

阅读更多

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

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


图1 聚族索引

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


图2 非聚族索引

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

图3 组合索引

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

分享到:
评论

相关推荐

    IndirectArrays.jl:索引或“查找”数组的Julia实现

    IndirectArray是一种使用index和value表的组合对数据进行编码的数组。 每个元素都分配有自己的索引,该索引用于从value表中检索value 。 具体来说,如果A是IndirectArray ,则A[i,j...] = value[index[i,j,...]] 。...

    人工智能-项目实践-C#-基于内存结构的多条件组合查询器(C#).zip

    用途 内存表格数据查询 游戏触发器条件查询 成就表: 定义成就类型, 事件类型, 玩家等级等静态表格数据 通过本系统查出符合条件的集合, 再检查动态数据, 例如: 玩家拥有物品等 特性 支持结果数量约束(Limit) 支持...

    易语言家庭影音播放器源码

    ' 究探讨使用,不得用于任何商业用途。如果由于以上原因造成的版权 ' 纠纷本站概不负责! ' * 本站资源未经许可,任何网站不得非法盗链及抄袭本站资源;如引用 ' 页面,请注明来自易语言资源网,谢谢合作! ' --====...

    Access 2000数据库系统设计(PDF)---001

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---002

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---018

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---003

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---011

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---020

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---009

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Java数据库编程宝典2

    第8章 组织查询结果和使用索引 8.1 使用ORDER BY对查询结果进行排序 8.2 GROUP BY子句 8.3 聚合函数 8.4 使用HAVING子句筛选组 8.5 使用索引来提高SQL查询的性能 8.6 视图 8.7 小结 第9章 连接和组合查询...

    Java数据库编程宝典4

    第8章 组织查询结果和使用索引 8.1 使用ORDER BY对查询结果进行排序 8.2 GROUP BY子句 8.3 聚合函数 8.4 使用HAVING子句筛选组 8.5 使用索引来提高SQL查询的性能 8.6 视图 8.7 小结 第9章 连接和组合查询...

    Java数据库编程宝典1

    第8章 组织查询结果和使用索引 8.1 使用ORDER BY对查询结果进行排序 8.2 GROUP BY子句 8.3 聚合函数 8.4 使用HAVING子句筛选组 8.5 使用索引来提高SQL查询的性能 8.6 视图 8.7 小结 第9章 连接和组合查询...

    Java数据库编程宝典3

    第8章 组织查询结果和使用索引 8.1 使用ORDER BY对查询结果进行排序 8.2 GROUP BY子句 8.3 聚合函数 8.4 使用HAVING子句筛选组 8.5 使用索引来提高SQL查询的性能 8.6 视图 8.7 小结 第9章 连接和组合查询...

    字符串去重工具(C#语言开发)

    【温馨提示】不得用于商业、不合法用途!! 支持去重的字符串种类: (1)纯数字字符串 (2)纯文字字符串 (3)纯符号字符串 (4)两两组合形式的字符串 (5)数字+文字+符号形式的字符串 操作步骤: (1)粘贴需要...

    Access 2000数据库系统设计(PDF)---012

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---015

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---027

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---025

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

    Access 2000数据库系统设计(PDF)---026

    964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中...

Global site tag (gtag.js) - Google Analytics