2010-08-16 75 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