优化SQL Server 索引的小技巧有哪些

技术优化SQL Server 索引的小技巧有哪些优化SQL Server 索引的小技巧有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在

优化SQL Server索引有哪些技巧?很多新手对此不是很清楚。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。需要的人可以从中学习,希望你能有所收获。

在本文中,我将解释如何使用SQL Server工具来优化数据库索引的使用,本文还涉及到索引的一般知识。关于索引的常识

索引是影响数据库性能的最大因素。由于这个问题的复杂性,我只能简单说一下,但目前有几本好书供大家参考。这里我只讨论两种SQL Server索引,即聚集索引和非聚集索引。在研究构建什么类型的索引时,应该考虑数据类型和保存数据的列。同样,您还必须考虑数据库可能使用的查询类型和最常用的查询类型。  

索引的类型

如果该列包含高度相关的数据,并且经常按顺序访问,则最好使用聚集索引,因为如果使用聚集索引,SQL Server将按升序(默认)或降序物理地重新排列数据列,以便可以快速找到查询的数据。同样,如果搜索控制在一定范围内,最好对这些列使用聚集索引。这是因为由于数据的物理重排,每个表上只有一个聚集索引。

与上述情况相反,如果列中包含的数据相关性较差,则可以使用非托管索引。您可以在一个表中使用多达249个非聚集索引——,尽管我无法想象在实际应用中会使用这么多索引。

默认情况下,当表使用主键时,SQL Server将自动为包含该键的列创建唯一的群集索引。显然,为这些列建立唯一的索引意味着主键的唯一性。在建立外键关系时,如果您打算频繁使用它,那么在外键列上建立非聚集索引是一个很好的方法。如果表有聚集索引,它将使用链表来维护数据页之间的关系。相反,如果表没有聚集索引,SQL Server会将数据页保存在堆栈中。 

数据页

当索引建立时,SQLServer建立一个数据页,这是一个加速搜索的指针。当建立索引时,设置其相应的填充因子。填充因子设置为指示索引中数据页的百分比。随着时间的推移,数据库的更新将消耗现有的可用空间,这将导致页面被拆分。页面拆分的结果是索引的性能降低,因此使用索引的查询将导致数据存储的碎片。建立索引时,设置了索引的填充因子,因此无法动态维护填充因子。为了更新数据页中的填充因子,我们可以停止旧索引,重建索引,重置填充因子(注意:这会影响当前数据库的运行,重要场合请谨慎使用)。DBCC索引碎片整理和DBCC索引碎片整理是清除聚集和非聚集索引碎片的两个命令。INDEXDEFRAG是一个联机操作(也就是说,它不阻止其他表操作,如查询),而DBREINDEX则物理重建索引。在大多数情况下,重建索引可以更好地消除碎片,但这种优势是以阻止索引所在表上当前发生的其他操作为代价的。当有一个大的片段索引时,INDEXDEFRAG将花费很长时间,因为该命令基于一个小的事务块。

填充因子

当您实现上述任何一种方法时,数据库引擎可以更有效地返回索引数据。fillfactor的主题超出了本文的范围,但我仍然提醒您,您需要注意将由fill factor索引的表。

执行查询时,SQL Server会动态选择要使用的索引。因此,SQL Server会根据每个索引中关键字的统计信息来决定使用哪个索引。值得注意的是,在日常数据库活动(如插入、删除和更新表)之后,SQL Server使用的这些统计信息可能已经“过期”,需要更新。您可以通过执行DBCC SHOWCONTIG来检查统计信息的状态。当您认为统计信息“过时”时,可以执行表的UPDATE STATISTICS命令,这样SQL Server就会刷新关于索引的信息。

建立数据库维护计划

SQL Server提供了一个工具来简化和自动维护数据库。这个名为数据库维护计划向导的工具也包括索引的优化。如果运行此向导,您将看到有关数据库中索引的统计信息,这些统计信息作为日志工作并定期更新,从而减少了手动重建索引造成的工作量。如果不想自动定期刷新索引统计,也可以选择在DMPW中重新组织数据和数据页,这样会停止旧的索引,根据特定的填充因子重新构建索引。

阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/128952.html

(0)

相关推荐

  • PostgreSQL物理备份工具pg_rman目怎么用

    技术PostgreSQL物理备份工具pg_rman目怎么用这篇文章给大家分享的是有关PostgreSQL物理备份工具pg_rman目怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。OS:

    攻略 2021年11月25日
  • Oracle数据的维护指令有哪些

    技术Oracle数据的维护指令有哪些这篇文章将为大家详细讲解有关Oracle数据的维护指令有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  一、SQL  1.SQL-Struct

    攻略 2021年11月20日
  • 如何用TopN算法在10亿个整数中找出前1000个最大的数

    技术如何用TopN算法在10亿个整数中找出前1000个最大的数如何用TopN算法在10亿个整数中找出前1000个最大的数,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决

    攻略 2021年10月21日
  • PHP函数和魔术常量有哪些

    技术PHP函数和魔术常量有哪些这篇文章主要讲解了“PHP函数和魔术常量有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP函数和魔术常量有哪些”吧!PHP 函数PH

    攻略 2021年11月30日
  • jvm有哪些垃圾回收机制(jvm垃圾回收实现原理和优点)

    技术JVM垃圾回收基本原理是什么这篇文章主要介绍“JVM垃圾回收基本原理是什么”,在日常操作中,相信很多人在JVM垃圾回收基本原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JVM

    2021年12月21日
  • 数据结构与算法-二叉树、AVL树、B树、红黑树总结

    技术数据结构与算法-二叉树、AVL树、B树、红黑树总结 数据结构与算法-二叉树、AVL树、B树、红黑树总结转载:原文链接:https://blog.csdn.net/wanderlustLee/arti

    礼包 2021年11月18日