网站大量收购独家精品文档,联系QQ:2885784924

G索引和视图.ppt

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

索引优点缺点 优点 加快访问速度 加强行的唯一性 缺点 带索引的表在数据库中需要更多的存储空间。 操纵数据的命令需要更长的处理时间,因为 它们需要对索引进行更新。 索引的类型-1 SQL Server 的索引包括:聚簇索引、非聚簇索引、包含性列索引、索引视图、全文索引和 XML索引。 1. 聚簇索引:保证表中的数据的物理存储顺序和排列顺序相同。 索引值是按照有序的次序排列,实际数据存储在索引的叶节点中。叶节点通过指针连接,形成链表,所以在进行表扫描时,按顺序读取索引中叶节点。通常按照表的主码字段建立聚簇索引。 索引的类型-2 索引可基于表或聚集索引来定义。当使用一个非聚集索引在聚集索引中查找数据时,非聚集索引的叶节点为聚集索引提供索引键,然后扫描底层的聚集索引,称为书签查找。书签查找要么通过rowid进行行访问(无聚集索引);要么使用聚集索引键进行索引查找。 2. 非聚簇索引:在逻辑和物理上独立于表,表数据不存储在索引的叶节点中。对于指向聚集索引的索引,叶节点中包含聚集键;无聚集索引时,叶节点中包含一个直接指向表数据的rowid。 两种索引对比:一个表中只能有一个聚簇索引,表示记录存储的物理顺序;一个表中可以有多个(249个)非聚簇索引,表示记录的逻辑顺序;非聚簇索引额外占用内存和硬盘空间;按聚簇索引存取数据比按非聚簇索引快。非聚簇索引可定义为唯一的,也可定义为非唯一的。 索引的类型-3 覆(涵)盖索引:是包含充足信息的索引,这些信息在执行书签查找时并不需要。 包含性索引:指包含索引键值之外的其他列值的非聚集索引。这样索引可以更小,又能提供覆盖功能。 在 SQL Server 2005 中,可以通过将非键列添加到非聚集索引的叶级别来扩展非聚集索引的功能。通过包含非键列,可以创建覆盖更多查询的非聚集索引。这是因为非键列具有下列优点: 它们可以是不允许作为索引键列的数据类型。 在计算索引键列数或索引键大小时,数据库引擎 不考虑它们。 对于包含性索引,包含列不是索引键的一部分,但存储在索引的叶节点中。当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显著提高查询性能,因为查询优化器可以在索引中找到所有列值;不访问表或聚集索引数据,从而减少磁盘 I/O 操作。 索引的类型-4 包含性索引的键列存储在索引的所有级别中,而非键列仅存储在叶级别中。可以避免超过当前索引大小的限制(最大键列数为 16,最大索引键大小为 900 字节)。 带有包含性列的索引准则 在 CREATE INDEX 语句的 INCLUDE 子句中定义非键列。只能对表或索引视图的非聚集索引定义非键列。 精确或不精确的确定性计算列都可以是包含性列。 与键列一样,只要允许将计算列数据类型作为非键索引列,从 image、ntext 和 text 数据类型派生的计算列就可以作为非键(包含性)列。 不能同时在 INCLUDE 列表和键列列表中指定列名。 INCLUDE 列表中的列名不能重复。 索引的类型-5 列大小准则 必须至少定义一个键列。最大非键列数为 1023 列。也就是最大的表列数减 1。 索引键列(不包括非键)必须遵守现有索引大小的限制(最大键列数为 16,总索引键大小为 900 字节)。 所有非键列的总大小只受 INCLUDE 子句中所指定列的大小限制; 列修改准则:修改已定义为包含性列的表列时,要受下列限制: 除非先删除索引,否则无法从表中删除非键列。 除进行下列更改外,不能对非键列进行其他更改: 将列的为空性从 NOT NULL 改为 NULL。 增加 varchar、nvarchar 或 varbinary 列的长度。 注意:这些列修改限制也适用于索引键列。 索引的类型-6 设计建议 重新设计索引键大小较大的非聚集索引,以便只有用于搜索和查找的列为键列。将覆盖查询的所有其他列设置为包含性非键列。这样,将具有覆盖查询所需的所有列,但索引键本身较小,而且效率高。 性能注意事项 避免添加不必要的列。添加过多的索引列(键列或非键列)会对性能产生下列影响: 一页上能容纳的索引行将更少。这样会使 I/O 增加并降低缓存效率。 需要更多的磁盘空间来存储索引。特别是,将 varchar(max)、nvarchar(max)、varbinary(max) 或 xml 数据类型添加为非键索引列会显著增加磁盘空间要求。这是因为列值被复制到了索引叶级别。因此,它们既驻留在索引中,也驻留在基表中。 索引维护可能会增加对基础表或索引视图执行修改、插入、更新或删除操作所需的时间。 您应该确定修改数据时在查询性能上的提升是否超过了对性能的影响,以及是否需要额外的磁盘空间要求。 索引的类型-7 索引(物化)视图:如果对视图创建一个唯一聚集索

文档评论(0)

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

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

1亿VIP精品文档

相关文档