Я использую asp.net с SQL Server 2008 SP2
У меня есть одна таблица с включенным полнотекстовым поиском.
Мое оборудование: четырехъядерный 2 ГГц, 4 ГБ ОЗУ, жесткий диск SAS.
Таблица содержит около 5 миллионов записей , и ее структура:
Pages table:
ID (INT)
GroupID (INT)
GroupStart (bit)
Col1 varchar(900)
Col2 nvarchar(450)
Col3 nvarchar(450)
Col4 nvarchar(450)
Col5 nvarchar(450)
У меня есть индекс 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;
Запрос занимает 1с , если общее количество строк составляет около 500.
и занимает 5 с для завершения, если общее количество строк составляет около 10000.
и занимает 60 с для завершения, если общее количество строк составляет около 100 000.
Есть идеи, почему запрос занимает так много времени?
Что-то не так в моем запросе, на сервере sql или это аппаратная проблема?