SQL Server 2008全文搜索 - 慢

时间:2010-11-02 13:36:07

标签: .net sql sql-server sql-server-2005 sql-server-2008

我正在使用带有SQL Server 2008 SP2的asp.net

我有一个启用了全文搜索的表。

我的硬件是:2GHZ四核,4GB RAM,SAS硬盘。

该表包含 500万条记录,其结构为:

Pages table:

ID (INT)
GroupID (INT)
GroupStart (bit)
Col1 varchar(900)
Col2 nvarchar(450)
Col3 nvarchar(450)
Col4 nvarchar(450)
Col5 nvarchar(450)

我在主键ID上有一个fts索引。

我正在使用以下查询来搜索表格:

SELECT * FROM (  
SELECT * , ROW_NUMBER()  OVER(  ORDER BY  KEY_TBL.Rank DESC  ) AS RowNumber , COUNT(*) OVER() as TotalRows  
FROM Pages p  
INNER JOIN  
CONTAINSTABLE(Pages, *,N' FORMSOF (INFLECTIONAL, movies)') AS KEY_TBL  
ON p.ID = KEY_TBL.[KEY]  
WHERE  (p.GroupID IS NULL OR p.GroupStart = 1) 
) LS  
WHERE RowNumber BETWEEN 0 AND 10  
ORDER BY RowNumber ASC;

如果总行数约为500,则查询需要 1s 才能完成。

如果总行数约为10,000,则需要 5s 才能完成。

如果总行数约为100,000,则需要 60s 才能完成。

知道为什么查询花了这么长时间?

我的查询,sql server是否有问题或是硬件问题?

2 个答案:

答案 0 :(得分:1)

全文搜索仅对在varchar或文本字段中搜索文本很有用,它不会加快查询速度。您需要向表中添加更多索引才能执行此操作。

通常,查询看起来过于复杂,但您没有解释查询需要执行的操作。我认为需要优化查询。

答案 1 :(得分:1)

考虑限制CONTAINSTABLE返回的匹配数 - > CONTAINSTABLE(Pages, *,N' FORMSOF (INFLECTIONAL, movies)', 100 )