2009-03-03 30 views
8

编写tsql查询时学习索引优化的最佳实用方法是什么?我有VS2008 SQL Express。有人可以提供我的例子等?我已经发现了在线文章,理论上它们都很棒,但是我仍然没有看到现实生活中的索引调整行为。在那里创建例子很容易吗?我如何学习SQL Server索引调整?

回答

6

为了调整索引,你往往需要大量的数据表,所以很少有简单的例子。

我的经验是使用SQL 2000工具。查询分析器,显示执行计划并查看使用的索引和连接的类型。这里很难描述它。

我可以在主题推荐一本好书,尤其是第9章

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

,直到你明白怎么自己做手工,我会使用自动索引优化工具阻止你。我认为这很重要,因为它建议增加一个索引,使您能够理智地检查建议并自行决定是否是一个好选择。通常,它会建议您添加一个包含多列的“覆盖”索引,以加快请求分析的单个查询速度,但是当您查看针对该表的所有查询时,这可能会对整个数据库产生不利影响。

0

如果您有SQL Developer版本,那么您需要查看数据库引擎优化顾问。

如果您使用分析器来针对数据库捕获标准工作负载,DETA可以推荐您可以应用哪些统计信息和索引。

要小心,虽然这种调整需要很多思想,因为添加新索引可能会增加工作负载的速度,但是您可能会增加一个不重要的查询的速度,而这对于一个非常重要的查询是不利的。

有一本关于TSQL查询的好书,它有关于查询如何工作的一些很好的建议,以及如何调整它们,这是MSSQL特有的。

+0

这本好书的名字是什么? – Svish 2009-05-14 11:38:37

+0

http://www.amazon.com/Inside-Microsoft-SQL-Server-2005/dp/0735623139/ref=sr_1_1?ie=UTF8&s=books&qid=1242338708&sr=8-1 Inside MIcrosoft SQl Server:T-SQL查询。 我想现在2008年可能会更合适。 – Spence 2009-05-14 22:06:14

0

在SQL Server中,如果您的数据库模式更简单,您并不需要调整太多,因为主键会自动生成聚簇索引,并且外键约束需要唯一的索引。 所以你的加入通常会得到照顾。

从哪里得到棘手的是应用程序中的查询使用的搜索和过滤器。您将不得不专门查看这些查询并确定其他索引的候选人。

另一种选择是SQL Server Tuning Advisor,但我劝阻它的使用,因为它会产生很多噪音。不过,您可以使用它来查找最糟糕的查询。