У меня есть образец mysql базы данных только с 1 таблицей (InnoDB), в которой есть следующие столбцы
таблица содержит более 30 миллионов записей, а поле описания имеет длину до 1000 символов.
Каков наиболее эффективный способ поиска некоторых записей в этой таблице? Мне нужно, например, описание, которое начинается с / заканчивается на / содержит.
Когда я запускаю такой запрос, как
SELECT * FROM tbl WHERE Description like '%abc'
, это занимает слишком много времени, потому что подобный оператор просматривает все записи таблицы, которые я Google и обнаружил, что есть что-то под названием Full TEXT Index
Я добавляю индекс, используя следующую команду
ALTER TABLE tbl ADD FULLTEXT INDEX `DescriptionIndex` (`Description` ASC)
они, когда я пытаюсь выполнить такой запрос
SELECT * FROM tbl WHERE MATCH (`Description`) AGAINST ('"The sea is awesome"')
иногда это занимает много времени, а в других случаях работает хорошо в зависимости от значения параметра Against, я не могу определить проблему
Мне нужно знать, если я что-то пропускаю, или есть лучший способ реализовать поиск.