如何对从ASP.NET应用程序运行的一些查询进行分析?我在工作中使用的某个软件由于数据库(我认为)而运行非常缓慢。虽然表有索引,但仍然很慢,因为它正在处理大量数据。我该如何进行分析,以查看在哪里可以进行一些小的改进,希望能带来更大的速度改进?
编辑:我想补充说明的是,在这些长时间查询期间,Web服务器会超时。
如何对从ASP.NET应用程序运行的一些查询进行分析?我在工作中使用的某个软件由于数据库(我认为)而运行非常缓慢。虽然表有索引,但仍然很慢,因为它正在处理大量数据。我该如何进行分析,以查看在哪里可以进行一些小的改进,希望能带来更大的速度改进?
编辑:我想补充说明的是,在这些长时间查询期间,Web服务器会超时。
Sql Server拥有一些优秀的工具来帮助您解决这种情况。这些工具内置于Management Studio中(曾经被称为Enterprise Manager+Query Analyzer)。
使用SQL Profiler来显示来自Web应用程序的实际查询。
复制每个问题查询(那些消耗大量CPU时间或IO的查询)。使用“展示实际执行计划”运行这些查询。希望您能看到一些明显缺失的索引。
您还可以运行调整向导(该按钮位于“显示实际执行计划”旁边),它会运行查询并给出建议。
通常,如果您已经有了索引并且查询仍然运行缓慢,那么您需要以不同的方式重新编写查询。
将所有查询保留在存储过程中可以使这项工作更加容易。
使用SQL Profiler来剖析SQL Server。
您还可以使用Red Gate的ANTS Profiler来剖析代码。
SET STATISTICS TIME ON
SET STATISTICS IO ON
当您在查询分析器中打开统计信息时,统计信息将显示在结果窗格的消息选项卡中。
IO 统计信息对我来说特别有用,因为它让我知道是否需要索引。如果从 IO 统计信息中看到高读取计数,我可能会尝试向受影响的表添加不同的索引。在尝试索引后,我再次运行查询以查看读取计数是否下降。经过几次迭代,我通常可以找到涉及表的最佳索引。
以下是这些统计命令的 MSDN 链接: