网络编程
位置:首页>> 网络编程>> 数据库>> 聚族索引、非聚族索引、组合索引的含义和用途

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

作者:zhaohuabing 来源:呦呦鹿鸣,食野之芩 发布时间:2010-07-02 21:51:00 

标签:聚族索引,非聚族索引,组合索引,sql,server

 在学习和使用各种数据库的过程中,我们常常会遇到聚族索引、非聚族索引、组合索引的概念,这些索引对我们使用数据库,特别是查询的速度的影响是很大的,前几天公司里来了一个sybase的工程师,通过他的讲解,我终于弄清楚了这几个概念的真正含义,觉得虽然问题很小,但收获满大,在这里和大家一起分享一下。

 一、什么是索引

索引可以理解为我们小时候使用的汉语字典的索引,如果想在字典中查找一个字,一页一页地翻字典查找是非常慢的,但如果使用字典的索引进行查询,很快就可以查到了。数据库的索引也是类似的。

数据库中的索引一般是按照B树来组织的,叶结点指向真正的数据,B树的定义我这里就不介绍了,有兴趣的话可以去翻翻数据结构的书。

二、聚族索引

在这里还是用字典来进行类比,一般来说汉语字典中有几种索引,如拼音、偏旁、笔画等。字典本身的组织也是排序的,我记得一般是按照拼音排序的。这里的拼音就是聚族索引。也就是说聚族索引的组织顺序和数据本身的组织顺序是一致的,这也解释了数据库中只能定义一个聚族索引的原因,因为数据本身只能按一种方式进行排序。

那聚族索引有什么特别的好处呢,这个好处就是在数据库中执行查找一批数据的语句会比较快,因为数据已经按照聚族索引排好序了,很少的io操作就可以将数据从库中取出。好比你在字典中查找发音从从a到c的汉字,只需要查到a的开始页和c的结束页,中间的所有页都符合查询要求,不用再一页一页地查找。
    


图1 聚族索引

   三、非聚族索引

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


图2 非聚族索引

   四、组合索引

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

图3 组合索引

 最后出一道小题目,考考大家看懂没有:

假设表中一共有100条数据,索引的B树为三层,查询结果返回50条按照聚族索引排序的数据,不建索引查询、按照聚族索引查询、按照非聚族索引查询所需的io次数各是多少?

0
投稿

猜你喜欢

  • 代码如下:<% set studentinstance = CreateStudent()&n
  • 在多数情况下,以增加文件大小代价来换连接数是有价值。而MHTML+dataURI = 省连接数,如果你不知道这是什么东东,可以看秦歌写的Da
  • 一、概述 对象是Oracle8i以上版本中的一个新的特性,对象实际是对一组数据和操作的封装,对象的抽象就是类。在面向对象技术中,对象涉及到以
  • 引言在负责咨询工作的过去 6 年中,我曾多次听说关于数据访问和操作方面的问题,它时刻困扰着用户:&ldquo;如何编写应用程序,以便
  • 报表服务器数据库可以为一个或多个报表服务器实例提供内部存储。因为报表服务器数据库架构可能会因为推出新的 Reporting Services
  • 摘要:下拉菜单经常带来更多的可用性问题,并且常常容易被混淆。这是因为网页设计师们往往会在不同的几种情况下使用它。同时,滚动的菜单降低了网页的
  • 作者: Alan Pearce原文: Multi-Column Layouts Climb Out of the Box地址: http:/
  • 俺比较笨,对太专业的书一直不感冒,看了就想睡觉。最近李明同学传了本“大话设计模式”电子版。偶然翻了翻,感觉还满通俗的,正适合我这样的懒人学习
  • MySQL Innodb 引擎优化,InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoD
  • 内容摘要:在像网站首页这样的资源比较集中的页面中,那些栏目最经常被用户点击?居左居右对广告的点击率的影响是什么?“一切用数字说话”:以上问题
  • asp日期转换星座函数,参数是日期型function astro(birth)astro=""if 
  • 阅读上一篇:你是真正的用户体验设计者吗? Ⅵ很可怕,是吧!图中翻译:(从内到外)第一层:用户体验第二层:内容管理界面设计顾客关系管理交互设计
  • 我们在开发过程中,经常遇到这样问题,就是要求定期进行数据库的检查,如果发现特定数据,那么就要进行某项操作,这个需求呢,有两种做法,一是利用W
  • Ajax 技术改变了大型商业 Web 应用程序的外观,但是许多较小的 Web 站点都不具备足够的资源重新构建完整的用户界面(UI)。Ajax
  • Monster是Alipay UED推出的网站代码分析、质量检测及评分的浏览器扩展,它能智能分析CSS、JS、HTML内容并生动形象展示网页
  •  我们可以先建立一个包含文件名,文件标题的待检索文件的数据库,然后,用ADO方式来访问它,并建立记录集对象。具体代码和说明见下:
  • JavaScript Dom编程 学习书籍选择JavaScript Dom编程学习,很多朋友无疑对如何选择入门的书籍,比较头疼。或许也是他们
  • 前段时间在论坛上有人问到一个淘宝网上的hover伪类实现的效果如果兼容ie6。其实,问题很简单,就是hover伪类在IE6中得不到很好的支持
  • 下面是IN条件运算符的SQL语句:SELECT column1, SUM(column2)  FROM&nbs
  • 我们有时候看到一些文章因为一行的字符超长而把一些表格或DIV撑开或字符写到溢出了.如何防止表格防止撑开,表格不被内容撑开,单行字符超长div
手机版 网络编程 asp之家 www.aspxhome.com