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



我正在使用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%'

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

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

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

特别打开显示执行计划,统计IO和时间。

一个常见的问题是何时调优逻辑读取和物理读取。您希望减少物理读取的次数,以便在缓存上完成读取,而不是在磁盘上。

我要做的第一件事是通过一个explain函数运行查询。这将向您详细说明查询处理,以便您可以看到数据库将在哪里花费时间。查找它在哪里执行全表扫描,因为这些通常是需要应用索引的罪魁祸首和指示器。

相关内容

  • 没有找到相关文章

最新更新