我決定更改使用LIKE '%' + @searchTerm + '%'
的搜索來使用FULLTEXT索引。我使用的是SQL Server 2005中在SQL Server中使用全文搜索的延遲
我創建了一個目錄,比如:
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分鐘運行一次搜索查詢!
SQL-server在第一次運行後緩存結果。 x時間過後,某些內容會使緩存無效。 – Johan
我應該說,即使對於來自原始慢查詢的不同查詢(具有不同的結果)它也是快速的。 – Paul