欢迎来到HELLO素材网! 南京网站制作选择顺炫科技
丰富的DIV CSS模版、JS,jQuery特效免费提供下载
当前位置:主页 > 建站教程 > 服务器教程 >

详解SQL Server数据库索引

发表于2019-04-11 11:36| 次阅读| 来源网络整理| 作者session

摘要:索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。利用索引查找数据,无需对整表停止

  【IT168技术文档】

  一、理解索引的构造

  索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。利用索引查找数据,无需对整表停止扫描,可能快速找到所需数据。微软的SQL SERVER提供了两种索引:汇集索引(clustered index,也称聚类索引、簇集索引)和非汇集索引(nonclustered index,也称非聚类索引、非簇集索引)。

  SQL Server 中数据存储的根本单位是页(Page)。数据库中的数据文件(.mdf 或 .ndf)分配的磁盘空间可能从逻辑上划分成页(从 0 到 n 延续编号)。磁盘 I/O 操作在页级执行。也就是说,南京网站制作,SQL Server 每次读取或写入数据的起码数据单位是数据页。

  下面咱们先简略的了解一下索引的体系构造:

  1. 汇集索引构造

  在 SQL Server 中,索引是按 B 树构造停止组织的。

  汇集索引单个分区中的构造:

  

  --建设UserAddDate汇集索引

  CREATE CLUSTERED INDEX [IX_UserAddDate] ON [ASPNet_zSurvey].[ZS_User]

  (

  [UserAddDate] ASC

  )

  汇集索引(Clustered Index)特点

  汇集索引的叶节点就是实践的数据页

  汇集索引中的排序顺序仅仅示意数据页链在逻辑上是有序的。而不是依照顺序物理的存储在磁盘上

  行的物理地位和行在索引中的地位是相反的

  每个表只能有一个汇集索引

  汇集索引的平均大小大约为表大小的5%左右

  2.非汇集索引构造

  非汇集索引与汇集索引具备相反的 B 树构造,它们之间的分明差别在于以下两点:

  1. 根底表的数据行不按非汇集键的顺序排序和存储。

  2. 非汇集索引的叶层是由索引页而不是由数据页组成。

  下图表示了单个分区中的非汇集索引构造:

  

  蕴含列的索引

  经过将蕴含列(称为非键列)减少到索引的叶级,可能扩充非汇集索引的性能。键列存储在非汇集索引的一切级别,而非键列仅存储在叶级别。

  下面举个简略的例子来阐明一下汇集索引和非汇集索引的区别:

  咱们有一本汉语字典,可能把它的正文自身看做是一个汇集索引,它是依照汉字拼音的扫尾字母排序的,不再需求查找其余目录。当遇到不意识的字时,需求联合“部首目录”和“检字表”, 先找到目录中的后果,然后再翻到您所需求的页码。经过这种方法查到的目录中字的排序并不是真正的正文的排序方法。把这种看做是一个非汇集索引。

  另外,请留意每个表只能有一个汇集索引。

  --建设UserAddDate非汇集索引

  CREATE NONCLUSTERED INDEX [IX_UserAddDate] ON [ASPNet_zSurvey].[ZS_User]

  (

  [UserAddDate] ASC

  )

  非汇集索引 (Unclustered Index) 特点

  非汇集索引的页,不是数据,而是指向数据页的页。

  若未指定索引类型,则默以为非汇集索引

  叶节点页的秩序和表的物理存储秩序不同

  每个表最多可能有249个非汇集索引

  在非汇集索引创建之前创建汇集索引(否则会引发索引重建)