У меня есть MySQL-таблица MySQL с полнотекстовым индексом для столбца ключевых слов и 20 миллионами строк.Это хорошо работает, когда поиск редких слов, например:
SELECT count(*) FROM books WHERE MATCH(keywords) AGAINST ('+DUCK' IN BOOLEAN MODE)
(0,005 с, 2k результатов)
Но когда я ищу более общие термины, это намного медленнее:
SELECT count(*) FROM books WHERE MATCH(keywords) AGAINST ('+YES' IN BOOLEAN MODE)
(результаты 5 с, 2 миллиона)
Это имеет смысл, поскольку последняя возвращает намного больше строк, но тогда как я могу предварительно отфильтровать строки перед текстовым поиском?Это не работает:
SELECT count(*) FROM books WHERE date > "2019-09-23" AND MATCH(keywords) AGAINST ('+YES' IN BOOLEAN MODE)
(5 с, 0 результат)