SQLServer索引结构及其使用.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQLServer索引结构及其使用 一、深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚 集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非 聚类索引、非簇集索引)。下血,我们举例來说明一下聚集索引和罪聚集索引的区别: 其实,我们的汉语字典的正文木身就是一个聚集索引。比如,我们要查“安”字,就会很自然 地翻开字典的前?儿页,因为“安”的拼昔是an-,而按照拼音排序汉字的字典是以英文字母“才开 头并以“才结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所冇以“旷开头的部分仍 然找不到这个字,那么就说明您的字典中没冇这个字;同样的,如果查“张字,那您也会将您的 字典翻到最后部分,I大1为“张的拼音是uzhang-。也就是说,字典的正文部分木身就是一个目录, 您不需要再去查其他目录来找到您需要找的内容。我们把这种正文内容木身就是一种按照一定规 则排列的目录称为“聚集索引 如果您认识某个字,您可以快速地从自动屮查到这个字。但您也可能会遇到您不认识的字, 不知道它的发音,这时候,您就不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部首 查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您要找的字。但您结合“部背0 录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查“张字,我们可以看 到在查部首之后的检字衣中“张的页码是672页,检字表中“张”的上面是“驰”字,但页码却是63 页,“张”的下血是“弩”字,页血是390页。很显然,这些字并不是真止的分别位于“张”字的上下 方,现在您看到的连续的“驰、张、弩三字实际上就是他们在非聚集索引屮的排序,是字典正文 中的字在非聚集索引中的映射。我们可以通过这种方式来找到您所需要的字,但它需要两个过程, 先找到H录屮的结果,然后再翻到您所需要的页码。我们把这种H录纯粹是H录,止文纯粹是正 文的排序方式称为“非聚集索引”。 通过以上例了,我们可以理解到什么是“聚集索弓I和“非聚集索引。进一步引申一下,我们 可以很容易的理解:每个表只能有一个聚集索引,因为目录只能按照一种方法进行排序。 二、何时使用聚集索引或非聚集索引 下面的表总结了何吋使用聚集索引或非聚集索引(很重要): 动作描述 使用聚集索引 使用非聚集索引 列经常被分组挂序 应 应 返回某范围內的数据 应 不应 -个或极少不同值 不应 不应 小数目的不同值 应 不应 大数目的不同值 不应 应 频鑿更新的列 不应 应 外键列 应 应 主键列 应 应 频蹩修改索引列 不应 应 事实上 我们可以通过前面聚集索引和非聚集索引的定义的例子來理解上表。如:返回某范 围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询 2004年1月1「|至2004年10月1日Z间的全部数据时,这个速度就将是很快的,因为您的这 本字典正文是按口期进行排序的,聚类索引只需耍找到耍检索的所有数据中的开头和结尾数据即 而不像非聚集索引,必须先查到忖录中查到每一项数据対应的页码,然后再根据页码查到具 体内容。 三、结合实际,谈索引使用的误区 理论的目的是应丿U。虽然我们刚才列出了何时应使川聚集索引或非聚集索引,但在实践中以 上规则却很容易被忽视或不能根据实际情况进行综合分析。卜dii我们将根据在实践屮遇到的实际 问题来谈一下索引使用的误区,以便于大家掌握索引建立的方法。 1、主键就是聚集索引 这种想法笔者认为是极端错谋的,是对聚集索引的一种浪费。虽然SQL SERVER默认是在 主键上建立聚集索引的。 通常,我们会在每个表中都建立一个ID列,以区分每条数据,并H这个ID列是自动增大 的,步长一般为1。我们的这个办公自动化的实例中的列Gid就是如此。此时,如果我们将这个 列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在 数据库中按照ID进行物理排序,但笔者认为这样做意义不大。 显而易见,聚集索引的优势是很明显的,而每个表中只能冇一个聚集索引的规则,这使得聚 集索引变得更加珍贵。 从我们前-而谈到的聚集索引的处义我们可以看出,使用聚集索引的戢大好处就是能够根据杳 询要求,迅速缩小查询范囤,避免全表扫描。在实际应用屮,因为ID号是自动生成的,我们并 不知道每条记录的ID号,所以我们很难在实践屮用ID号來进行查询。这就使让ID号这个主键 作为聚集索引成为一种资源浪费。其次,让每个ID号都不同的字段作为聚集索引也不符合“大数 目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对川户经常修改记录内容, 特别是索引项的时候会负作用,但对于査询速度并没有

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档