在编写tsql查询时学习索引调优的最佳实用方法是什么?我有VS2008 SQL Express。有人可以请我提供示例等吗?我已经找到了在线文章,它们理论上很棒,但我仍然没有看到现实生活中的索引调整。那里有小的易于创建的例子吗?
答案 0 :(得分:6)
要调整索引,您往往需要包含大量数据的大型表,因此很难得到简单的小例子。
我的经验是使用SQL 2000工具。查询分析器,显示执行计划并查看所使用的索引和联接的类型。很难在这里描述它。
我可以推荐一本关于这个主题的好书,特别是第9章。
http://www.amazon.com/Professional-Server-Performance-Tuning-Programmer/dp/0470176393
我会阻止您使用自动索引调整工具,直到您了解如何手动执行此操作。我认为重要的是它建议添加一个你能够理智地检查建议的索引并自己决定它是否是一个好的选择。通常,它会建议您添加包含许多列的“覆盖”索引,以加快您要求分析的单个查询,但是当您查看针对该表的所有查询时,这可能会对您的数据库产生负面影响。
答案 1 :(得分:1)
Kimberly Trip(SQL女神)是一位专家,并且已经和他人谈过了关于这个问题的书面批注:
http://www.sqlskills.com/BLOGS/KIMBERLY/category/Indexes.aspx
答案 2 :(得分:0)
如果您有SQL Developer版,那么您需要查看数据库引擎优化顾问。
如果您使用分析器捕获数据库的标准工作负载,DETA可以推荐您可以应用的统计信息和索引。
请注意,虽然调整需要大量思考,因为添加新索引可能会提高工作负载的速度,但是您可能会增加不重要查询的速度而不利于非常重要的查询。
有一本关于TSQL查询的好书,它对查询如何工作以及如何调整它们有一些很好的建议,这是MSSQL特有的。
答案 3 :(得分:0)
在SQL Server中,如果您的数据库架构更简单,则实际上不需要调整太多,因为主键自动生成聚簇索引,而外键约束需要唯一索引。 所以你的联盟通常会得到照顾。
在哪里变得棘手的是使用应用程序中的查询使用的搜索和过滤器。您必须专门查看这些查询并确定其他索引的候选者。
另一个选项是SQL Server Tuning Advisor,但我不鼓励使用它,因为它会产生很多噪音。但是,您可以使用它来查找最糟糕的查询。
答案 4 :(得分:0)
如果您要找出效果最差的查询,请参阅我的回答here。
学习如何调整是需要练习的。如果你想熟练掌握它,首先要购买Sajal Dam的书SQL Server Query Performance Tuning Distilled
答案 5 :(得分:0)
Ken England的Microsoft SQL Server 2000 Performance Optimization and Tuning Handbook是经典之作。 (亚马逊评论说这本书的2005版本不太好)