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

相关推荐

  • XamarinAndroid组件中RecylerView适配器如何使用动画

    技术XamarinAndroid组件中RecylerView适配器如何使用动画这篇文章主要介绍XamarinAndroid组件中RecylerView适配器如何使用动画,文中介绍的非常详细,具有一定的参考价值,感兴趣的小

    攻略 2021年12月3日
  • 配置python环境中遇到的一些问题

    技术配置python环境中遇到的一些问题 配置python环境中遇到的一些问题这是个人第一次发博客,想分享一下在配置python中出现的一些问题。
    在cmd或Anaconda命令行中操作的。
    pip使用

    礼包 2021年12月20日
  • 12项目全站HTTPS

    技术12项目全站HTTPS 12项目全站HTTPS项目全站HTTPS
    1.配置web端博客配置文件
    [root@web01 ~]# vim /etc/nginx/conf.d/linux.wp.com.

    礼包 2021年11月7日
  • mysql中Too many connections问题怎么处理

    技术mysql中Too many connections问题怎么处理这篇文章将为大家详细讲解有关mysql中Too many connections问题怎么处理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这

    攻略 2021年11月6日
  • ajax对注册名进行验证检测存在于数据库中的实例分析

    技术ajax对注册名进行验证检测存在于数据库中的实例分析ajax对注册名进行验证检测存在于数据库中的实例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。这

    攻略 2021年12月2日
  • Redis如何安装及配置

    技术Redis如何安装及配置小编给大家分享一下Redis如何安装及配置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!安装Redis安装非常方便

    攻略 2021年11月15日