Присоединяйтесь после фильтров (например, объедините результаты), не пытайтесь присоединиться, а затем фильтровать.
Причина в том, что вы теряете использование своего полнотекстового индекса.
Разъяснение в ответ на комментарий: здесь я использую слово «присоединиться» в общем, не как JOIN
, а как синоним слияния или объединения.
Я, по сути, говорю, что вы должны использовать первый (более быстрый) запрос или что-то в этом роде. Причина в том, что он быстрее, состоит в том, что каждый из подзапросов достаточно беспорядочный, поэтому БД может использовать полнотекстовый индекс этой таблицы для очень быстрого выбора. Соединение двух (предположительно намного меньших) наборов результатов (с UNION
) также происходит быстро. Это значит, что все быстро.
Медленная версия проходит через множество данных, тестируя ее, чтобы увидеть, подходит ли она вам, вместо того, чтобы быстро отсеивать данные и искать только те строки, которые вам, вероятно, действительно нужны.