2011-08-05 93 views
0

我使用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 

當下面的查詢運行時,它正在約110秒的時候有60,000視圖中的行。

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

可以提供哪些建議來改進此查詢?

+0

沿着'GROUP BY p1.CategoryId'的行,可能嗎? –

回答

0

我會做的第一件事就是通過解釋函數運行查詢。這將詳細描述查詢處理,以便您可以查看數據庫將要花費的時間。尋找它在做全表掃描的位置,因爲這些通常是你需要應用索引的罪魁禍首和指標。

+0

你是什麼意思'解釋功能' – gotsp

+0

這將是@ link664提到的查詢分析器。大多數數據庫都有這些類型的分析程序,可以分析查詢並報告數據庫如何處理。在某些數據庫上被稱爲「解釋」,通常以「解釋選擇...」的形式輸入。 – drekka