У меня есть база данных SQL Server 2008. Эта база данных состоит из двух таблиц:Как улучшить полнотекстовый поиск
Manufacturer
------------
ID,
Name nvarchar(256)
Product
-------
ID
ManufacturerID
Name nvarchar(256)
Мое приложение имеет поле поиска. Я не знаю, будет ли пользователь указывать имя производителя или название продукта. Кроме того, я пытаюсь быть немного изящным и обрабатывать неправильное написание. Чтобы выполнить эти критерии, я использую функцию CONTAINSTABLE. С помощью этой функции, я создал следующий запрос:
SELECT
*
FROM
[Manufacturer] m
INNER JOIN [Product] p ON m.[ID]=p.[ManufacturerID]
INNER JOIN CONTAINSTABLE(Manufacturer, Name, @searchQuery) r ON m.[ID]=r.[Key]
ORDER BY
r.[Rank]
Мой запрос исполняющей ОЧЕНЬ МЕДЛЕННО с CONTAINSTABLE функции. Без второго INNER JOIN запрос выполняется менее чем за 1 секунду. При включении второго INNER JOIN запрос запускается чуть более 30 секунд (слишком долго).
Может ли кто-нибудь дать рекомендации по эффективности? Я не знаю, как преодолеть это препятствие.
Спасибо,
Благодарим за отзыв. Я только выбираю поля, которые мне нужны. Кроме того, индексы уже установлены. Вот почему я так смущен этим. – Villager
Вы используете SELECT * - это действительно все, что вам нужно? – Tobiasopdenbrouw