如何找出SQL Server中访问最多或经常使用的表

时间:2010-12-03 12:39:20

标签: sql-server-2005 optimization

我目前处于这样一种情况:我需要找出经常使用哪些表格或在给定时间段内我们的应用程序中使用的次数。让我们从一些startDate说到endDate。

我想在这里得到的详细信息是tableName及访问次数。 例如: -

tableName    No.Of Access
Table5        100
Table2         80
...
Tablen         n

此外,如果上述查询或有任何其他方法来检查这些表中的哪些列经常使用将是很好的。这个练习背后的想法是正确索引大多数使用表中的列。但我不确定这是否也是进行优化的正确方法。因此,如果你们有更好的选择来确定如何优化上述内容,那也会很棒。

我们正在使用SQL Server 2005,并且该应用程序正在IIS上托管的.net framework 3.5上运行。 如果需要任何进一步的细节,请告诉我。

2 个答案:

答案 0 :(得分:2)

我对此类信息的唯一了解是sys.dm_db_index_usage_stats

编辑:事实证明,可以从

获得更可靠的信息
select * from sys.dm_db_index_operational_stats(db_id(),NULL,NULL,NULL)

两个报告的涵盖范围之间的差异in this blog post

答案 1 :(得分:1)

我调整“性能不佳”数据库的方法是首先识别问题查询,然后优化它们,而不是仅仅尝试一次性优化所有内容。

您可以使用SQL事件探查器来识别性能不佳的查询。根据您的系统,跟踪相应的RPC,SQL批处理,T-SQL或存储过程事件,过滤时间过长的事件(我倾向于以> 5秒的持续时间开始)或执行过多的读取(我开始有12800个读取,大约100MB)。跟踪这些适当长度的“黄金时段”系统使用情况,您将了解数据库的哪些部分表现不佳,哪些部分表现良好(即那些未出现在列表中的部分)。 / p>

或者,询问您的用户(或您自己)系统的哪些部分表现不佳,并查看基础查询。

根据系统的复杂程度,正确的索引可能有点艺术性,因为优化一个查询的策略可能会降低另一个查询的性能。在找到一个运行良好的版本之前,您可能会经过多次修订。 (这就是我们称之为“调整”的原因。)