Задержка при использовании полнотекстового поиска в SQL Server

Я решил изменить поиск, используя 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 минут!

7
задан Paul 14 July 2011 в 12:52
поделиться