如何改进全文搜索

时间:2010-08-16 03:00:40

标签: sql sql-server tsql sql-server-2008 full-text-search

我有一个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函数执行非常慢。如果没有第二个INNER JOIN,查询将在不到1秒的时间内运行。包含第二个INNER JOIN后,查询运行时间超过30秒(太长)。

任何人都可以提供一些性能建议吗?我不知道如何克服这个障碍。

谢谢,

1 个答案:

答案 0 :(得分:0)

  • 只选择您需要的字段,而不是SELECT *
  • 设置m和p的索引?