- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
U9数据库索引设计指南
U9数据库索引设计指南
文件编号:
版本号:
V1.0
修改状态:
编写人:
黄卫
审核人:
张红斌
批准人:
批准时间:
适用对象
该指南适用于U9设计人员和开发人员。
适用数据库产品
该指南适用于MS SQL Server 2005数据库。
版本记录
此部分要记录该文档形成过程中的历次版本变更过程及变更的内容
版本
修改与参与人
修改时间
修改原因
修改概述
审批人
1.0
黄卫
2007/06/01
原始文档建立
张红斌
相关文档
此部分包含对该文档起指导与约束作用的相关文档以及预计在该文档指导与约束下将要建立的文档。
1、 《U9数据库设计规范》
约定
标有 ★ 的条目表示强制性规范。
无前缀词的“索引”默认指的是非聚集索引。
数据库索引设计细则
索引概述
索引是为了加速数据检索而设计的数据库对象。与书中的索引一样,数据库中的索引可以快速找到表或索引视图中的特定信息。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。通过创建设计良好的索引以支持查询,可以显著提高数据库查询和应用程序的性能。索引可以减少为返回查询结果集而必须读取的数据量。
另外,索引还可以强制表中的行具有唯一性,从而确保表数据的数据完整性。
索引类型
聚集索引
官方说明:
在 SQL Server 中,索引是按 B 树结构进行组织的。索引 B 树中的每一页称为一个索引节点。B 树的顶端节点称为根节点。索引中的底层节点称为叶节点。根节点与叶节点之间的任何索引级别统称为中间级。在聚集索引中,叶节点包含基础表的数据页。根节点和叶节点包含含有索引行的索引页。每个索引行包含一个键值和一个指针,该指针指向 B 树上的某一中间级页或叶级索引中的某个数据行。每级索引中的页均被链接在双向链接列表中。
(聚集索引结构图)
聚集索引与非聚集索引最大的不同,是索引的叶节点不仅包含索引项,还同时包含数据行,即:聚集索引和表中数据构成了树结构。这意味着获取每条记录(select *)都会比非聚集索引要少一次IO。
聚集索引最适合排序性质的范围查询,因为从索引树上有哪些信誉好的足球投注网站到第一行数据后,可以不再做索引查找,而是连续读取直至超出需要的数据范围。这个效率是非常高的!
聚集索引键值的排列顺序决定了表数据的物理存储顺序,所以一个表只能建立一个。默认情况下,会为主键自动创建聚集索引。构成聚集索引键的列越少越好,这样不光可以提高B树便利效率,而且非聚集索引的索引叶节点要包含聚集索引键。
U9主数据表的主键(ID)和多语表主键(ID、SysMLFlag)默认采用的是聚集索引。如果有特殊情况需要对其它字段使用聚集索引,需要审批。★
以下访问方式,较适合建立聚集索引:
包含大量非重复值的列。
使用下列运算符返回一个范围值的查询:BETWEEN、、=、 和 =。
被连续访问的列。
返回大型结果集的查询。
经常被使用联接或 GROUP BY 子句的查询访问的列;一般来说,这些是外键列。对 ORDER BY 或 GROUP BY 子句中指定的列进行索引,可以使 SQL Server 不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。
OLTP 类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。
以下访问方式,不适合建立聚集索引:
频繁更改的列
这将导致整行移动(因为 SQL Server 必须按物理顺序保留行中的数据值)。这一点要特别注意,因为在大数据量事务处理系统中数据是易失的。
宽键
来自聚集索引的键值由所有非聚集索引作为查找键使用,因此存储在每个非聚集索引的叶条目内。
非聚集索引
官方说明:
非聚集索引与聚集索引具有相同的 B 树结构,它们之间的显著差别在于以下两点:
基础表的数据行不按非聚集键的顺序排序和存储。
非聚集索引的叶层是由索引页而不是由数据页组成。
非聚集索引中的每个索引行都包含非聚集键值和行定位符。此定位符指向聚集索引或堆中包含该键值的数据行。
(非聚集索引结构)
非聚集索引与课本中的索引类似。数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(这可以由聚集索引规定)。
设置为非聚集索引的字段值(键值)是包含在非聚集索引中的。如果需要查询的字段已经完全包含在非聚集索引中是不需定位到表中再次查找的。这种情况被称为“索引覆盖”。
以下访问方式,较适合建立非聚集索引:
包含大量非重复值的列,如姓氏和名字的组合(如果聚集索引用于其它列)。如果只有很少的非重复值,如只有 1 和 0,则大多数查询将不使用索引。
不返回大型结果集的查询。
返回精确匹配的查询的有哪些信誉好的足球投注网站条件(W
文档评论(0)