执行速度慢的查询,寻找解决方案的想法

时间:2011-08-05 00:41:21

标签: sql-server-2008 query-tuning

我正在使用SQL Server 2008.

我有一个名为testView的视图

在视图中,其中一列使用了从此页面获取的另一个查询 - http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

即沿着这种格式

Create View testView as
    SELECT p1.CategoryId,    
           ( SELECT ProductName + ','    
               FROM Northwind.dbo.Products p2    
              WHERE p2.CategoryId = p1.CategoryId    
              ORDER BY ProductName    
                FOR XML PATH('') ) AS Products    
    FROM Northwind.dbo.Products p1

当运行以下查询时,视图中有60,000行时,大约需要110秒。

select * from testView where Products like '%asdf%'

可以提供哪些建议来改进此查询?

2 个答案:

答案 0 :(得分:1)

我会使用SQL Server内置的查询分析器来探索执行计划,并找出花费最多时间的地方。

http://www.sql-server-performance.com/2006/query-analyzer/

专门启用“显示执行计划”和“统计IO和时间”。

常见的一点是性能调优logical and physical reads。您希望减少物理读取次数,以便在缓存中而不是在磁盘上完成读取。

答案 1 :(得分:0)

我要做的第一件事就是通过explain函数运行查询。这将详细说明对您的查询处理,以便您可以查看数据库将花费时间的位置。寻找它进行全表扫描的位置,因为这些通常是您需要应用索引的罪魁祸首和指标。