Мой индекс заполнен 12 миллионами строк из таблицы DatasSearch_fr.
Поля:
[Id] [int] IDENTITY(1,1) NOT NULL,
[Data] [nvarchar](max) NOT NULL,
[DataId] [varchar](200) NOT NULL,
[DataTypeId] [int] NOT NULL
Используя FREETEXTTABLE следующим образом:
SELECT * FROM FREETEXTTABLE(DatasSearch_fr, (Data), 'din', LANGUAGE 1036) AS FT
Запрос мгновенно возвращает 12 000 строк
Но с помощью FREETEXTTABLE следующим образом:
SELECT DataId, DataTypeId, MAX(Rank) as Rank FROM DatasSearch_fr
INNER JOIN FREETEXTTABLE(DatasSearch_fr, (Data), 'din', LANGUAGE 1036) AS FT ON FT.[Key] = Id
Group By DataId, DataTypeId
Запрос возвращает 4400 строк за 10 или 15 секунд...
Проблема для меня не в том, что возвращаются 4400 строк, эта точка логически связана с Max(rank)
и Group by
... Но 10 или 15 секунд кажутся слишком большими, и это самое медленное время отклика не всегда имеет место при поиске всех ключевых слов.
Знаете ли вы способ улучшить это время отклика?
Спасибо за помощь, Себастьян.