如何学习SQL Server索引调优?

7

在编写tsql查询时,学习索引调优的最佳实践方法是什么?我有VS2008 SQL Express。是否有人可以提供给我示例等内容?我已经找到了在线文章,它们在理论上很好,但我仍然无法看到索引调优在现实生活中的作用。是否存在小而易于创建的示例?

6个回答

6
要调整索引,通常需要具有大量数据的大型表格,因此很难找到小而简单的示例。
我的经验是使用SQL 2000工具。查询分析器显示执行计划并查看使用的索引和连接类型。在这里很难描述。
我可以推荐一本关于此主题的好书,尤其是第9章。

http://www.amazon.com/Professional-Server-Performance-Tuning-Programmer/dp/0470176393

在您了解如何手动执行后,我建议您不要使用自动索引调整工具。当它建议添加索引时,我认为重要的是您有能力对建议进行合理性检查,并自行决定是否是一个好的选项。通常,它会建议您添加一个“覆盖”索引,其中包含许多列,以加速您要分析的单个查询,但是当您查看针对该表的所有查询时,这可能会对您的数据库产生不利影响。


1
当我回答这个问题时,Stack Overflow问我是人还是机器人!:( lol - MikeW
1
停止窃取Jeff的亚马逊推荐链接!这就是为什么Stack Overflow认为你是机器人的原因。 - Nick Kavadias

2

1

0
如果您拥有SQL Developer版本,您需要查看数据库引擎调优顾问。
如果您使用分析器来捕获对数据库的标准工作负载,则DETA可以推荐您可以应用的统计信息和索引。
但请注意,调整需要仔细考虑,因为添加新索引可能会增加工作负载的速度,但您可能会降低一个非常重要的查询的速度而提高一个不重要的查询的速度。
有一本关于TSQL查询的好书,其中提供了一些非常好的关于查询工作原理以及如何进行调优的建议,该书专门针对MSSQL。

那本好书的名字是什么? - Svish
微软SQL Server内幕:T-SQL查询。我想现在可能更适合使用2008版。 - Spence

0
在SQL Server中,如果您的数据库架构比较简单,您不需要进行太多的调整,因为主键会自动生成聚集索引,而外键约束需要唯一索引。所以通常情况下,您的连接已经被处理好了。
问题出现在应用程序中使用的搜索和过滤查询上。您需要具体查看这些查询,并确定额外索引的候选项。
另一个选择是SQL Server Tuning Advisor,但我不建议使用它,因为它会产生很多噪音。不过,您可以使用它来找到最严重的查询。

0

要确定性能最差的查询的起点,请查看我在这里给出的答案here

学习调优是需要实践的。如果你想熟练掌握它,可以先购买Sajal Dam的书《SQL Server查询性能调优精要》SQL Server Query Performance Tuning Distilled


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接