优化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)

相关推荐

  • 淘宝账户注册,怎样申请淘宝帐号?(详细过程)

    技术淘宝账户注册,怎样申请淘宝帐号?(详细过程)一)免费注册.1.登录淘宝网页面淘宝账户注册,点击“免费注册”链接;2.进入注册页面,填写会员名(5-20个字符)、密码(6-16个英文字母、数字或符号组成);3.输入一个

    生活 2021年10月26日
  • 如何将后端baas化(baas替代后端程序员)

    技术怎样将后端BaaS化怎样将后端BaaS化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。BaaS 化的核心其实就是把我们的后端应用封装成 RESTfu

    攻略 2021年12月21日
  • fabric开发流程(fabric网络架构设置)

    技术Fabric网络环境启动过程的示例分析小编给大家分享一下Fabric网络环境启动过程的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!fabric网络环境启动过程详解之前我们讲到 fabric

    攻略 2021年12月25日
  • Mysql中复合索引使用规则有哪些

    技术Mysql中复合索引使用规则有哪些这篇文章主要介绍了Mysql中复合索引使用规则有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。联合索引验证:从左

    攻略 2021年11月3日
  • 如何理解Java设计模式的代理模式

    技术如何理解Java设计模式的代理模式这篇文章将为大家详细讲解有关如何理解Java设计模式的代理模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、代理模式定义  为其

    攻略 2021年10月23日
  • 抖音刷人气,抖音直播刷人气?

    技术抖音刷人气,抖音直播刷人气?推荐代刷网专业团队刷抖音播放量,24小时秒刷,可以打开网址,去少量刷一点试试,不懂的也可以加他们微信信誉很好,我的抖音播放量就是在代刷平台里刷的。
    抖音大伙都知道,是目前最火爆的短视频AP

    测评 2021年10月20日