数据库之索引基础

数据库之索引基础

ID:22287721

大小:239.61 KB

页数:7页

时间:2018-10-28

数据库之索引基础_第1页
数据库之索引基础_第2页
数据库之索引基础_第3页
数据库之索引基础_第4页
数据库之索引基础_第5页
资源描述:

《数据库之索引基础》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、数据库索引的基础知识来源:DianPingIT发布吋间:2012-06-2710:36阅读:9256次推荐:18原文链接[收藏]一、理解索引的结构索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使用索引杏找数据,无需对整表进行扫描,付以快速找到所需数据。微软的SQLSERVER提供了两种索引:聚集索引(clusteredindex,也称聚类索引、簇集索引)和非聚集索引(nonclusteredindex,也称非聚类索引、非簇集索引)。SQLServer屮数据存储的基本单位是页(Page)。数据库屮的数据文件(.mdf或.ndf)分配

2、的磁盘空间可以从逻辑上划分成页(从0到n连续编号)。磁盘I/O操作在页级执行。也就是说,SQLServer每次读取或写入数据的S少数据单位是数据页。下面我们先简单的了解一下索引的体系结构:1.聚集索引结构在SQLServer屮,索引是按B树结构进行组织的。聚集索引单个分区中的结构:idindex一id=1root_page上一页下一页史引行中间级-E-上一页下一页宋引行上一页I下一页~常引行~上一页下一页宋引行叶节点/教据页±-K

3、T-霣上一J[

4、T—贝上一耵

5、下一K数裾行数据行数据行数据行上一霣

6、T-JI数据行建立UserAdcJDate聚集索引CRE

7、ATECLUSTEREDINDEX[工X_AddDate]ON[User][AddDate]ASC聚集索引(ClusteredIndex)特点•聚集索引的叶节点就是实际的数据页•聚集索引屮的排序顺序仅仅表示数据页链在逻辑上是有序的。而不是按照顺序物理的存储在磁盘上•行的物理位置和行在索引屮的位置是相同的•每个表只能有一个聚集索引•聚集索引的平均大小大约为表大小的5Q/c左右1.非聚集索引结构非聚集索引与聚集索引具有相同的B树结构,它们之间的显著差别在于以下两点:1.基础表的数裾行不按非聚集键的顺序排序和存储。2.非聚集索引的叶层是由索引页而不是由数据页组

8、成。下阁示意了单个分区屮的非聚集索引结构:idindex_id>0root_page包含列的索引通过将包含列(称为非键列)添加到索引的叶级,可以扩展非聚集索引的功能。键列存储在非聚集索引的所有级别,而非键列仅存储在叶级别。下面準个简羊的例子来说明一下聚集索引和非聚集索引的区别:我们有一本汉语字典,可以把它的正文本身看做是一个聚集索引,它是按照汉字拼音的开头字母排序的,不再需要查找其他目录。当遇到不认识的字时,需要结合“部首目录”和“检字表”,先找到目录中的结果,然后再翻到您所需要的页码。通过这种方法査到的0录中字的排序并不是真正的正文的排序方法。把这种看

9、做是一个非聚集索引。另外,请注意每个表只能有一个聚集索引。--建立UserAddDate非聚集索引CREATENONCLUSTEREDINDEX[IX_AddDate]ON[User]([AddDate]ASC)非聚集索引(UnclusteredIndex)特点•非聚集索引的页,不是数据,而是指向数据页的页。•若未指定索引类型,则默认为非聚集索引。•叶节点贝的次序和表的物理存储次序不同•每个表最多可以有249个非聚集索引•在非聚集索引创建之前创建聚集索引(否则会引发索引重建)二、选择建立哪种索引1.何时创建聚集索引更能提髙性能ClusteredIndex

10、会提岛大多数table的性能,尤其是当它满足以下条件时:独特,狭窄,持续增长的,最好是只向上增加。例如:•Identity•Date,identity•GUID(onlywhenusingnewsequentialid()function)2.非聚集索引提髙性能的方法非聚集索引由于B树的节点不是具体数据贞,有吋候由于这个原因,会导致非聚集索引甚至不如表遍历来的快。但是,非聚集索引有个特性,如果你要查询的内界,在非聚集索引中以及被覆盖到了,则不需要继续到聚集索引,或者RID(heap结构屮的行标识符)屮去寻找数据了,这时候就可以很大的提高性能,这就是覆盖面

11、(Covering)的问题。由于聚集索引叶子节点就是具体数据,所以聚集索引的覆盖率是100°/<>,通过提高覆盖面来提高性能的问题也就只有非聚集索引(NonclusteredIndexes)才存在。当查询中所打的columns都包括在index上时,我们说这indexcoversthequery.Columns的顺序在此不重要(Select时候的顺序不重要,但是Index建立的顺序可得小心了)。在SQLServer2005中,为了提高这种Covering带来的好处,甚至可以通过将键列添加到非聚集索引的叶级别來扩展非聚集索引的功能。补充:只有查询在具有高度

12、选择性的情况丁,非聚集索引才有优势。三、使用聚集索引或非聚集索引的场景(注:优先

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

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

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