2010-08-16 39 views
0

我有一個SQL Server 2008數據庫。這個數據庫有2個表:如何改進全文搜索

Manufacturer 
------------ 
ID, 
Name nvarchar(256) 

Product 
------- 
ID 
ManufacturerID 
Name nvarchar(256) 

我的應用程序有一個搜索框。我不知道用戶是否要提供製造商名稱或產品名稱。另外,我正在努力使自己有點優雅並處理錯誤的拼寫。爲了達到這個標準,我使用了CONTAINSTABLE函數。使用此功能,我創建了以下查詢:

SELECT 
    * 
FROM 
    [Manufacturer] m 
    INNER JOIN [Product] p ON m.[ID]=p.[ManufacturerID] 
    INNER JOIN CONTAINSTABLE(Manufacturer, Name, @searchQuery) r ON m.[ID]=r.[Key] 
ORDER BY 
    r.[Rank] 

我的查詢使用CONTAINSTABLE函數執行VERY SLOW。沒有第二個INNER JOIN,查詢運行時間不到1秒。隨着包含第二個INNER JOIN,查詢運行時間超過30秒(太長)。

任何人都可以提供一些性能建議嗎?我不知道如何克服這個障礙。

謝謝

回答

0
  • 只選擇你需要的字段,而不是SELECT *
  • m和p上的索引是否設置?
+0

感謝您的回覆。我只選擇我需要的字段。另外,索引已經設定好了。這就是爲什麼我對此感到困惑。 – Villager 2010-08-16 12:38:05

+0

您正在運行SELECT * - 您確實需要這些嗎? – Tobiasopdenbrouw 2010-08-17 11:44:44