04第四章索引和查询优化

04第四章索引和查询优化

ID:1398010

大小:1.38 MB

页数:79页

时间:2017-11-11

04第四章索引和查询优化_第1页
04第四章索引和查询优化_第2页
04第四章索引和查询优化_第3页
04第四章索引和查询优化_第4页
04第四章索引和查询优化_第5页
资源描述:

《04第四章索引和查询优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQLServer第4章索引和查询优化第4章索引和查询优化4.1索引的作用与构架4.2索引类型4.3规划设计索引的一般原则4.4索引的创建和删除4.5索引使用中的维护4.6查询优化4.1索引的作用与构架一、什么叫索引数据库中的索引与书籍中的索引类似,在一本书中,利用索引可以快速查找所需信息,无须阅读整本书。在数据库中,索引使数据库程序无须对整个表进行扫描,就可以在其中找到所需数据。书中的索引是一个词语列表,其中注明了包含各个词的页码。而数据库中的索引是某个表中一列或者若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

2、4.1.1索引概述二、索引的作用通过创建唯一索引,可以保证数据记录的唯一性。可以大大加快数据检索速度。可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。在使用ORDERBY和GROUPBY子句中进行检索数据时,可以显著减少查询中分组和排序的时间。使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。4.1.2SQLServer索引下的数据组织结构在SQLServer数据库内,索引对象作为8KB页的集合存储。SQLServer支持视图上的索引。视图上第一个允许的索引是聚集索引。在视图上执行CREATEINDE

3、X语句时,视图的结果集被具体化,并且存储在与有聚集索引的表具有相同结构的数据库中。每个表或索引视图的数据行存储在8KB数据页集合中。每个数据页都有一个96字节的页头,其中包含象拥有该页的表的标识符(ID)这样的系统信息。如果页链接在索引列表中,则页头还包含指向下一页及前面用过的页的指针。在页尾没有行偏移表。数据行填充页的剩余部分。每个表、索引和索引视图在sysindexes内有一个记录行,由对象标识符(id)列和索引标识符(indid)列的组合唯一标识。1.堆集结构堆集在sysindexes内有一行,其indid=0。sysindex

4、es.FirstIAM列指向IAM(索引分配映像)页链的IAM首页,IAM页链管理分配给堆集的空间。SQLServer使用IAM页在堆集中浏览。堆集内的数据页和行没有任何特定的顺序,也不链接在一起。数据页之间唯一的逻辑连接是记录在IAM页内的连接。通过扫描IAM页可以对堆集进行表扫描或串行读,以找到容纳这个堆集的页的扩展盘区。因为IAM按扩展盘区在数据文件内存在的顺序表示它们,所以这意味着串行堆集扫描一律沿每个文件进行。使用IAM页设置扫描顺序还意味着堆集中的行一般不按照插入的顺序返回。2.聚集索引结构聚集索引对表的物理数据页中的数据

5、按列进行排序,然后再重新存储到磁盘上,即聚集索引与数据是混为一体的,它的叶节点中存储的是实际的数据。每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。应当在创建任何非聚集索引之前创建聚集索引。聚集索引的大小平均是表的5%。在创建索引时系统需要比索引的表1.2倍的磁盘空间,索引创建完成后自动回收。2.聚集索引结构(续)聚集索引在sysindexes内有一行,其indid=1。数据链内的页和其内的行按聚集索引键值排序。所有插入都在所插入行中的键值与排序顺序相匹配时执行。SQLServer将索引组织为B树。索引内的每一页包含一个页

6、首,页首后面跟着索引行。每个索引行都包含一个键值以及一个指向较低级页或数据行的指针。索引的每个页称为索引节点。B树的顶端节点称为根节点。索引的底层节点称为叶节点。每级索引中的页链接在双向链接列表中。在聚集索引内数据页组成叶节点。根和叶之间的任何索引级统称为中间级。对于聚集索引,sysindexes.root指向它的顶端。SQLServer沿着聚集索引浏览以找到聚集索引键对应的行。在lname列上创建索引后,查询employee表可以看出表中记录是按lname值的顺序排列;删除lname列上的聚集索引,而在emp_id上创建聚集索引后,

7、表中记录按照emp_id列值顺序排列。3.非聚集索引非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序。非聚集索引的叶节点存储了组成非聚集索引的关键字值和行定位器。如果索引时没有指定索引类型,默认情况下为非聚集索引;应当在创建非聚集索引之前创建聚集索引;每个表最多可以创建249个非聚集索引;最好在唯一值较多的列上创建非聚集索引;经常需要联接和分组查询,应在联接和分组操作中使用的列上创建多个非聚集索引。3.非聚集索引(续)非聚集索引与聚集索引一样有B树结构,但是有两个重大差别:1、数据行不按非聚集索引键

8、的顺序排序和存储。2、非聚集索引的叶层不包含数据页。相反,叶节点包含索引行。非聚集索引可以在有聚集索引的表、堆集或索引视图上定义。在SQLServer中,非聚集索引中的行定位器有两种形式:1、如果表是堆集(没有聚集索引)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。