第8章_索引与视图.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章_索引与视图

第8章 索引与视图 本章内容 8.1 使用索引 8.2 使用视图 8.1 使用索引 索引是与表或视图关联的磁盘上结构,索引中的键存储在一个结构中,使SQL Server可以快速有效地查找与键值关联的行。 建立索引的优点: 索引可以减少为返回查询结果集而必须读取的数据量;索引还可以强制表中的行具有唯一性,从而确保表数据的数据完整性;使用索引可以快速找到表或索引视图中的特定信息 。 8.1 使用索引 索引的分类 表或视图的索引可以包括以下几类: (1) 惟一索引 在表中建立惟一性索引时,组成该索引的字段或字段组合在表中具有惟一值,也就是说,对于表中的任何两行记录来说,索引键的值都是各不相同。 8.1 使用索引 (2) 聚集索引 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行,即聚集索引决定了数据的物理顺序。只有在表中建立了一个聚集索引后,数据才会按照索引键值指定的顺序存储到表中。由于一个表中的数据只能按照一种顺序来存储,所以在一个表中只能建立一个聚集索引。 表具有聚集索引,则该表称为聚集表。否则,其数据行存储在一个称为堆的无序结构中 。 8.1 使用索引 (3) 非聚集索引 非聚集索引包含非聚集索引键值,并且每个键值项都有指向包含该键值的数据行的指针。具有独立于数据行的结构 。 从非聚集索引中的索引行指向数据行的指针称为行定位器。行定位器的结构取决于数据页是存储在堆中还是聚集表中。对于堆,行定位器是指向行的指针。对于聚集表,行定位器是聚集索引键。 注意: 聚集索引和非聚集索引都可以是唯一的,即任何两行都不能有相同的索引键值 ;索引也可以不是唯一的,即多行可以共享同一键值 ;每当修改了表数据后,都会自动维护表或视图的索引 。 8.1 使用索引 (4) 包含性列索引 一种非聚集索引,它扩展后不仅包含键列,还包含非键列 。 (5) 索引视图 视图的索引将具体化(执行)视图,并将结果集永久存储在唯一的聚集索引中,而且其存储方法与带聚集索引的表的存储方法相同。创建聚集索引后,可以为视图添加非聚集索引。 8.1 使用索引 (6) 全文索引 一种特殊类型的基于标记的功能性索引,由Microsoft SQL Server全文引擎(MSFTESQL)服务创建和维护,用于帮助在字符串数据中搜索复杂的词。 (7) XML索引 xml数据类型列中XML二进制大型对象的已拆分持久表示形式 。 注意: 对表中的列定义了PRIMARY KEY约束和UNIQUE约束时,会自动创建索引。 8.1 使用索引 索引设计准则 要设计出好的索引集,需要了解数据库、查询和数据列的特征 。 (1) 数据库准则 避免对经常更新的表创建过多的索引,并且列要尽可能少;使用多个索引可以提高更新少而数据量大的查询的性能。 对小表进行索引可能不会产生优化效果 。 当视图包含聚合、表联接或聚合和联接的组合时,视图的索引可以显著地提升性能 。 8.1 使用索引 (2) 查询准则 为经常用于查询中的谓词和联接条件的所有列创建非聚集索引。 涵盖索引可以提高查询性能,因为符合查询要求的全部数据都存在于索引本身中 。 将插入或修改尽可能多的行的查询写入单个语句内,而不要使用多个查询更新相同的行。 评估查询类型以及如何在查询中使用列 。例如,在完全匹配查询类型中使用的列就适合用于非聚集索引或聚集索引。 8.1 使用索引 (3) 列准则 对于聚集索引,应保持较短的索引键长度。另外,对唯一列或非空列创建聚集索引可以使聚集索引效率高 . 不能将ntext、text、image、varchar(max)、nvarchar(max)和varbinary(max)数据类型的列指定为索引键列 ,不过,varchar(max)、nvarchar(max)、varbinary(max)和xml数据类型的列可以作为非键索引列参与非聚集索引。 xml数据类型的列只能在XML索引中用作键列 。 8.1 使用索引 如果索引包含多个列,则应考虑列的顺序 。 用于等于 (=)、大于 ()、小于 () 或BETWEEN搜索条件的WHERE子句或者参与联接的列应该放在最前面。其他列应该基于其非重复级别进行排序,就是说,从最不重复的列到最重复的列。 考虑对计算列进行索引 。 8.1 使用索引 (4) 索引特征 在确定某一索引适合某一查询之后,可以选择最适合具体情况的索引类型。创建索引时需确定以下选项。 聚集还是非聚集 唯一还是非唯一 单列还是多列 索引中的列是升序排序还是降序排序 8.1 使用索引 创建索引 1. 创建索引步骤如下: (1) 设计索引 索引设计包括确定要使用的列,选择索引类型(例如聚集或非聚集),选择适当的索引选项,以及确定文件组或分区方案布置

文档评论(0)

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

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

1亿VIP精品文档

相关文档