Текущий запрос:
SELECT * FROM 'fnx_sports' WHERE (Title LIKE '%base%' OR Title LIKE '%ball%')
Приведенный выше запрос займет около 0,0300 секунд.
Более быстрый запрос:
SELECT * FROM 'fnx_sports' WHERE (Title LIKE 'base%' OR Title LIKE 'ball%')
Приведенный выше запрос займет около 0,0010 секунд.
Проблема:
Мне нужны результаты первого запроса, так как второй (более быстрый) запрос не имеет подстановочного знака в начале (что позволяет использовать индексы).
Какие у меня есть варианты?
Один из вариантов - иметь отдельную таблицу, которая содержит все ключевые слова из поля «Заголовок», однако это не подходит, поскольку я ищу поиск по символам, а не по ключевым словам.
Например, следующий запрос также должен работать:
SELECT * FROM 'fnx_sports' WHERE (Title LIKE 'b%' OR Title LIKE 'b%' OR TitleReversed LIKE 'b%' OR TitleReversed LIKE 'b%')
Я не уверен, что это самый эффективный способ сделать это. Я не хочу изменять свою таблицу и структуру кода без подтверждения лучшего метода. Я ценю любой совет!
Примечание: Невозможно использовать полнотекстовый формат, поскольку у меня есть таблица, которая становится довольно большой и требует постоянных вставок и выборок, поэтому я использую INNODB вместо MYISAM, который требуется для полнотекстового поиска.