SQLServer数据库索引的基础知识

广告也精彩

首先,了解索引的结构数据库中的角色索引类似于书中目录的角色,它用于提高查找信息的速度。 使用索引查找数据,您可以在不扫描整个表的情况下快速查找所需的数据。  Microsoft的SQL Server提供了两个索引:群集索引(也称为集群索引,群集索引)和非聚合索引,也称为非群集索引,非群集索引。SQLServer中的数据存储基本单元是页面(页面)。 分配在数据库(.mdf或.ndf)中分配的磁盘空间可以逻辑分为页面(从0到n连续数字)。 磁盘I / O操作在页面级别执行。 也就是说,SQL Server的最小数据单元读取或写入数据是数据页。让我们知道索引的架构:收集索引结构在SQL Server中,根据B树结构组织索引。收集索引列表中的结构: – 创建用户添加日期以收集index createClusteredIndindIndindIndindIndIndIndiNing [Ix_adddate]([添加日期] ASC)收集索引(群集索引)函数聚合索引的叶节点是实际数据页。在聚合索引中排序仅表示数据页链逻辑对齐。 而不是以物理存储的顺序存储线路线的位置和索引的位置是相同的。每个表只能具有收集索引聚合指数的平均大小约为表大小的5%。2.非分配指数结构非聚合索引和聚合索引具有相同的B树结构,它们之间的显着差异如下:1.基本表的数据线未按非聚合物密钥的顺序排序和存储。2.非聚合指数的叶片层由索引页而不是数据页组成。下图显示了单个分区中的非聚合索引结构:包含列的索引您可以将索引索引(称为非Key)的功能扩展到索引。密钥列存储在非聚合索引的所有级别中,而不是密钥列仅存储在叶子级别上。以下是聚合索引和非聚合物指数之间差异的简单示例:我们有一个中文字典,您可以将文本本身视为一个集合索引,它由汉字的起点字母排序,不再需要查找其他目录。 当您遇到一个不知道的单词时,您需要将“部门的第一个目录”和“检查单词”组合,首先查找目录中的结果,然后将其返回到所需的页面。 在此方法中找到的目录中排序的单词排序不是正常文本排序方法。 这被用作非聚合索引。另请注意,每个表只能具有集合索引。 – 构建的UserAdddate非聚合索引在[User]([添加日期] ASC)上创建非聚簇索引[ix_ adddate]实体索引非聚合索引页面而不是数据,但指向数据页的页面。如果未指定索引类型,则默认值是非聚合索引。叶节点页面的顺序和表的物理存储顺序是不同的。每个表最多可具有249个非聚合物指标在非聚合索引创建之前创建一个集合索引(否则索引重建)其次,选择建立的指数1.创建聚合索引可以提高性能ClusteredIndex增加了大部分性能,尤其是在满足以下条件时:独特,窄,持续增长,优选仅向上增加。 例如:身份日期,身份唯一唯一的undentionid()函数)2.改善非聚合指数性能的方法非聚合索引,因为B树的节点不是特定的数据页面,有时因此因为这个原因,非聚合索引不高于此。 但是,非聚合索引具有功能。 如果要在非聚合索引中查询,则无需继续概述索引或删除(堆栈结构中的堆栈结构)以查找数据。 此时,您可以提高覆盖的性能。由于聚合指数离开节点是特定数据,因此聚合指数的覆盖率为100%,并且仅通过增加覆盖范围仅获得非聚合索引。当查询中的所有列包含在索引上时,我们表示此索引。 列并不重要(选择中的顺序并不重要,但索引中的顺序可以小心)。在SQLServer 2005中,为了提高该覆盖的好处,可以通过将非键列添加到非聚合指数来扩展非设定索引的功能。补充:仅查询的优势是具有高选择性的非聚合索引。三,使用聚簇索引或非收集的索引(注意:建议优先,不应该是)第四,初级键和聚合指标的比较以下是一些公众评论中的测试示例:检查站dbccdropcleanubuffers。setstaticiction。声明@ ddatime。设置@ d = getdate()Select * fromUserwhereaddddddddde>’2008-06-01’ANDDDDATE <2008-06-10'选择[语句执行时间(mix)] = dationiff(ms,@ d,getDate()) - (影响45077) - 表'用户'。 扫描计数1,逻辑读取1103次,物理读取2次,读取读数1090次,LOB逻辑读0次,LOB物理读数0次,在LOB中检查5次。 -  2543检查站dbccdropcleanubuffers。setstaticiction。声明@ ddatime。设置@ d = getdate()选择* fromUserwith(index = ix_adddate)whereadddate>‘2008-06-01’ANDDDDDDDDATE <2008-06-10'选择[语句执行时间(mix)] = dationiff(ms,@ d,getDate()) - (影响45077) - 表'用户'。 扫描计数1,逻辑读取45,165次,物理读数133次,阅读读数141次,LOB逻辑读取0次,LOB物理读数0次,在LOB中检查5次。 -  3860。V.使用索引索引需要除数据表以外的物理存储空间创建索引并维护索引需要一定的时间更新表时,需要重建索引以降低数据的维护速度。 SQLServer数据库索引的基础知识

 

转载于天翼云知识,如有侵权,请联系删除,谢谢

© 版权声明
广告也精彩

相关文章

广告也精彩

暂无评论

暂无评论...