索引与查询性能.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章索引与查询性能 索引中文词典解释根据一定需要,把书刊中的主要内容或各种题名摘录下来,标明出处、页码,按一定次 序分条排列,以供人查阅的资料。如果一本书籍没有目录,要想快速检索出想要查询的资料,就只有逐页查 找,这种方式效率极其底下。数据库中的索引也类似于书籍目录相同的功能。 索引是有效使用数据库系统的基础,当表中的数据量较小时,使用索引和不使用索引带来的性能差异 不大;但当表中的数据量极大时,就一定需要索引的辅助才能有效的存取数据。 一般索引建立的是否适当,是决定性能好坏的关键。并由于更改索引结构不会影响数据字段的定义,也就 是前端程序可以照常存取,因此当上线后的应用程序使用效率比较低的时候,可以尝试建立或优化所以, 从而提高应用软件的性能。 SCMDB示例数据库中表的数据量较小,无法演示使用索引带来的效率提升。本章采用微软示例数据 库AdventureWorks作为演示数据库。希望通过以下的测试,给读者一个感性认识。 【演示】查询表 SalesOrderDetail 中销售订单编号在 48077-48080范围内的订单编号、产品 ID以及 订单数量。 【分析】表 SalesOrderDetail 的记录数为 121317,其中 Sales前缀为架构名称。通过参数 set statistics time on开启统计时间。图 14-1所示为在表SalesOrderDetail 使用聚集索引后的演示效果, 时间执行时间仅仅为 1毫秒。图14-2所示为删除聚集索引后的运行时间为 27毫秒。表中的数据量越大, 使用索引与不使用索引带来的性能上的差异性越大。 TOC \o 1-5 \h \z (lull)\d ragQiiLAdui_.s - SQLQury4.f£||l AS * X --朗分析、编译和执行售语句刼纵 - ate cur* on J SaleffCrderlDr r CrlezQxy where ShLesOrderI077 and SaleaOrdetI-49DSC I皓果p消見 就L託十工井祈和塢译fl寸间: EPT时间-D空萩,占用时间-1妾禾h 1皿f亍受懸刨 表扫捆计进1,逻辑读取1抉,物理读収9忆萌讲0离上“逻笹详 fCL 执{苗|可 UET时间-C总秒*占用时间-1总称 图14-1使用索引进行查询 图14-2没有使用索引进行查询 14.1索引的分类 SQLServer中索引分为两种类型: 聚集索引(Clustered Index )和非聚集索引(Non Clustered Index), 也可称为聚簇索引和非聚簇索引。 1、 聚集索引 聚集索引是一种特殊索引,它使数据按照索引的顺序进行存放。其实,我们的汉语字典的正文本身就 是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页, 因为“安”的拼音是“an”, 而按照拼音排序汉字的字典是以英文字母“ a”开头并以“ z”结尾的,那么“安”字就自然地排在字典的 前部。如果您翻完了所有以“ a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同 样的,如果查“张”字,那您也会将您的字典翻到最后部分,因为“张”的拼音是“ zhang”。也就是说, 字典的正文部分本身就是一个目录,您不需要再去查其他目录来找到您需要找的内容。我们把这种正文内 容本身就是一种按照一定规则排列的目录称为“聚集索引” 。 2、 非聚集索引 非聚集索引用于指定数据的逻辑顺序,也就是说,表中的数据并没有按照索引键值指定的顺序排列, 而仍然按照插入记录时的顺序存放。其索引页中包含着索引键值和它所指向该行记录在数据页中的物理位 置,叫做行定位符(RID: Row ID)。好似书后面的的索引表,索引表中的顺序与实际的页码顺序也是不一 致的。而且一本书也许有多个索引。比如主题索引和作者索引。 SQL Server在默认的情况下建立的索引是非聚集索引,由于非聚集索引不对表中的数据进行重组,而 只是存储索引键值并用一个指针指向数据所在的页面。一个表如果没有聚集索引时 ,理论上可以建立 249 个非聚集索弓I。每个非聚集索引提供访问数据的不同排序顺序 以下以偏旁部首查字法为例讲解非聚集索引。日常生活中如果遇到不认识的汉字,并且不知道它的发 音的时候,就需要去根据“偏旁部首”查到您要找的字,然后根据这个字后的页码直接翻到某页来找到您 要找的字。但结合“部首目录”和“检字表”而查到的字的排序并不是真正的正文的排序方法,比如您查 “张”字,我们可以看到在查部首之后的检字表中“张”的页码是 672页,检字表中“张”的上面是“驰” 字,但页码却是 63页,“张”的下面是“弩”字,页面是 390页。很显然,这些字并不是真正的分别位 于“张”字的上下方,现在您看到的连续的“驰、张、

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档