优化SQLServer索引的一种小技术

在本文中,我将展示如何使用SQL Server工具来优化数据库索引的使用,本文还介绍了索引的一般知识。
U3000 U3000
标引常识
U3000 U3000
影响数据库性能的最大因素是索引,由于问题的复杂性,我可以简单地谈谈这个问题。但也有一些好的书给你看。在这里,我只讨论两种SQL Server索引是聚簇索引和非聚簇索引。当看什么类型的索引建立,你应该考虑数据类型和列来保存数据,以同样的方式,你必须同时考虑查询的数据库可以使用类型和查询最频繁使用的类型。
U3000 U3000
索引类型

如果柱救了高度相关的数据,并经常顺序访问,最好使用聚簇索引,这是因为如果使用聚集索引,SQL Server将身体以升序或降序重排(默认)的数据集,使您可以快速找到数据查询。同样,在搜索控制情况在一定范围内,最好使用聚集索引的列。这是因为,由于物理数据的重排,只能有一个聚集索引在每个表。
U3000 U3000
通过以上的对比,如果数据中包含的列相关性很差,你可以用nonculstered指标。你可以使用多达249个非聚集索引的表中的-虽然我不能想象在这么多指标的实际应用。
U3000 U3000
当桌子用主关键字(主键),默认情况下,SQL Server将自动为该列创建唯一聚集索引(S)包含的关键。很明显,这些列的唯一索引的建立(S)是主要的关键性建筑外键关系时。,如果你打算频繁使用它,它是建立非聚集索引的外部关键字柱的一个好方法。如果表有一个聚集索引,它使用一个链表来维护数据页之间的关系。相反,如果表没有聚集索引,SQL Server将在堆栈保存数据页。
U3000 U3000
数据页

当指数设立时,SQLServer建立一个数据页(数据页)和数据页指针来加快搜索速度。当指数设立时,其相应的填充因子也设置。设置填充因子的目的是显示在索引中的数据页的百分比。随着时间的推移,数据库的更新会消耗现有的闲置空间,使被分割的页面。页面分裂的结果是减少索引的性能,因此使用索引的查询会导致数据存储是支离破碎的。当一个指标的设置,该指数填充因子设置的填充因子,所以不能保持动态。
U3000 U3000
为了更新数据页的填充因子,我们可以停止旧索引和重建索引,并重新填充因子(注意:这将影响到当前数据库的操作和使用,它小心翼翼地在重要场合)。DBCC INDEXDEFRAG和DBCC DBREINDEX是两个命令清除聚集和nonculstered指数fragments.indexdefrag是联机操作(即,它没有其他表操作,如查询块),并重建索引DBREINDEX身体。在大多数情况下,重建索引可以更好的消除碎片,但这种优势是通过阻断,目前对指数的表发生的其他行动来实现的。当一个较大的碎片索引时,indexdefrag会花更长的时间,因为工作命令的数量是基于事务块的。
U3000 U3000
填充因子

当你执行这些措施,数据库引擎可以更有效地回报指数为基础的数据,填充因子的话题(填充因子)超出了本文的范围,但我还是想提醒你注意那些表,打算填补指数。
U3000 U3000
执行查询时,SQL Server动态选择使用哪个索引。为此,SQL Server确定哪些指标是基于统计分布在这个关键词在每个指标。值得注意的是,在数据库日常活动如插入、删除和更新表,这些数据由SQL Server使用可能已经过期需要更新。您可以通过执行dbcc showcontig看到统计的状态。当你认为数据已经过时,你可以执行的形式更新统计信息的命令,使SQL Server更新有关指标的信息。
U3000 U3000
建立数据库维护计划

SQL Server简化并自动维护数据库提供了一个工具,这个工具,被称为数据库维护计划向导(这个称之为),也包括对指标的优化。如果你运行此向导,您将看到在数据库索引统计,这些统计工作日志,定期更新,从而减轻手动重建索引所造成的工作量。如果你不想自动更新索引统计,你也可以选择重新组织数据和在这个称之为数据页,这将停止旧索引和重建索引根据特定的填充因子。