У меня есть две таблицы
Product (id int, brandid int,Name nvarchar(1000)) 2+ million rows
Brand (id int,name nvarchar(1000)) 20k rows
Полный текстовый индекс включен в обоих полях имени таблицы.
Если я сделаю поиск, например
SELECT count(*)
FROM Product p join Brand b
on p.BrandID = b.ID
WHERE contains(b.name,'calvin')
Работает очень быстро (менее секунды). Тот же результат, если работает с полем p.name.
Но этот запрос
SELECT count(*)
FROM Product p join Brand b
on p.BrandID = b.ID
WHERE contains(b.name,'calvin')
OR
contains(p.Name,'calvin')
занимает больше минуты (на самом деле несколько минут). Если ИЛИ изменено на И, это также очень быстро.
Я не могу использовать союзы или таблицы, так как я использую nhibernate.