详解sqlserver数据库索引

详解sqlserver数据库索引

ID:20511877

大小:54.00 KB

页数:3页

时间:2018-10-12

详解sqlserver数据库索引_第1页
详解sqlserver数据库索引_第2页
详解sqlserver数据库索引_第3页
资源描述:

《详解sqlserver数据库索引》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、详解SQLServer数据库索引>>教育资源库  一、理解索引的结构  索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。微软的SQLSERVER提供了两种索引:聚集索引(clusteredindex,也称聚类索引、簇集索引)和非聚集索引(nonclusteredindex,也称非聚类索引、非簇集索引)。  SQLServer中数据存储的基本单位是页(Page)。数据库中的数据文件(.mdf或.ndf)分配的磁盘空间可以从逻辑上划分成页(从0到n连续编号)。磁盘I/O操作在页级执行。也就是说,SQLServer

2、每次读取或写入数据的最少数据单位是数据页。  下面我们先简单的了解一下索引的体系结构:  1.聚集索引结构  在SQLServer中,索引是按B树结构进行组织的。  聚集索引单个分区中的结构:  --建立UserAddDate聚集索引  CREATECLUSTEREDINDEX[IX_UserAddDate]ON[ASPNet_zSurvey].[ZS_User]  (  [UserAddDate]ASC  )  聚集索引(ClusteredIndex)特点  聚集索引的叶节点就是实际的数据页  聚集索引中的排序顺序仅仅表示数据页链在逻辑上是有序的。而不是按照顺序物理的存储在磁盘上  行的

3、物理位置和行在索引中的位置是相同的  每个表只能有一个聚集索引  聚集索引的平均大小大约为表大小的5%左右  2.非聚集索引结构  非聚集索引与聚集索引具有相同的B树结构,它们之间的显著差别在于以下两点:  1.基础表的数据行不按非聚集键的顺序排序和存储。  2.非聚集索引的叶层是由索引页而不是由数据页组成。  下图示意了单个分区中的非聚集索引结构:  包含列的索引  通过将包含列(称为非键列)添加到索引的叶级,可以扩展非聚集索引的功能。键列存储在非聚集索引的所有级别,而非键列仅存储在叶级别。  下面举个简单的例子来说明一下聚集索引和非聚集索引的区别:  我们有一本汉语字典,可以把它的正文

4、本身看做是一个聚集索引,它是按照汉字拼音的开头字母排序的,不再需要查找其他目录。当遇到不认识的字时,需要结合部首目录和检字表,先找到目录中的结果,然后再翻到您所需要的页码。通过这种方法查到的目录中字的排序并不是真正的正文的排序方法。把这种看做是一个非聚集索引。  另外,请注意每个表只能有一个聚集索引。  --建立UserAddDate非聚集索引  CREATENONCLUSTEREDINDEX[IX_UserAddDate]ON[ASPNet_zSurvey].[ZS_User]  (  [UserAddDate]ASC  )  非聚集索引(UnclusteredIndex)特点  非聚集

5、索引的页,不是数据,而是指向数据页的页。  若未指定索引类型,则默认为非聚集索引  叶节点页的次序和表的物理存储次序不同  每个表最多可以有249个非聚集索引  在非聚集索引创建之前创建聚集索引(否则会引发索引重建)  二、选择建立哪种索引  1.何时创建聚集索引更能提高性能  ClusteredIndex会提高大多数table的性能,尤其是当它满足以下条件时:  独特,狭窄,持续增长的,最好是只向上增加。例如:  •Identity  •Date,identity  •GUID(onlyns都包括在index上时,我们说这个indexcoverstheque

6、ry.Columns的顺序在此不重要(Select时候的顺序不重要,但是Index建立的顺序可得小心了)。  在SQLServer2005中,为了提高这种Covering带来的好处,甚至可以通过将非键列添加到非聚集索引的叶级别来扩展非聚集索引的功能。  补充:只有查询在具有高度选择性的情况下,非聚集索引才有优势。  三、使用聚集索引或非聚集索引的场景(注:优先级依次为推荐,应,不应)  四、主键和聚集索引的比较12下一页>>>>这篇文章来自..,。  以下是一些大众点评网中测试使用的示例:CHECKPOINTDBCCDROPCLEANBUFFERSSETSTATISTICSIOONdecl

7、areddatetimesetd=getdate()SELECT*FROMASPNet_zSurvey.ZS_UserASPNet_zSurvey.ZS_Users,d,getdate())--(45077行受影响)--表'ZS_User'。扫描计数1,逻辑读取45165次,物理读取133次,预读141次,lob逻辑读取0次,lob物理读取0次,lob预读0次。--3860  五、使用索引的代价  索引需

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

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

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