我决定使用LIKE '%' + @searchTerm + '%'
更改搜索以使用FULLTEXT索引。我正在使用SQL Server 2005。
我已经创建了一个目录,如下:
CREATE FULLTEXT CATALOG CatalogName AS DEFAULT
我已经创建了索引,如下所示:
CREATE FULLTEXT INDEX ON Table (col1, col2) KEY INDEX TablePK WITH CHANGE_TRACKING AUTO
然后我就这样使用它:
SELECT col1, col2
FROM Table t
INNER JOIN FREETEXTTABLE(Table, *, @SearchTerm) s ON s.[Key] = t.Id
ORDER BY s.[Rank] DESC
它会返回正确的结果,但如果它没有运行一段时间,则需要大约30秒才能运行搜索。运行一次后,所有进一步的搜索都是即时的。如果我不管它并在一小时后回来,第一次搜索再次变慢。即使表格在此期间未更新,似乎也会发生这种情况。
我在完全不同的服务器上的两个完全不同的数据库上尝试了这个,行为是一样的。在其中一个数据库中,被索引的表非常小(50行),而另一个则更大(1000行)。
任何人都可以帮我解决问题是什么以及如何解决问题?我唯一的选择是完全放弃FULLTEXT,或者每隔n分钟提供一次服务来运行搜索查询!
答案 0 :(得分:6)
默认情况下,SQL Server
会在一段时间不活动(300
秒,AFAIR
)后卸载断字符。
重新加载它需要检查需要向证书颁发者发送Internet请求的签名。
请在开发服务器上运行:
EXEC sp_fulltext_service
@action = 'verify_signature',
@value = 0
看看它是否有帮助。
<强>更新强>
答案 1 :(得分:0)
也许您的数据库设置为自动关闭。
答案 2 :(得分:0)
服务器是否很忙或有足够的内存?我不太了解全文搜索的工作原理,但如果服务器上有很多活动,它可能会将事情刷新到磁盘上。