Таблица поиска с 30 миллионами записей - PullRequest
0 голосов
/ 29 мая 2020

У меня есть образец mysql базы данных только с 1 таблицей (InnoDB), в которой есть следующие столбцы

  • Id int PK
  • Описание ТЕКСТ

таблица содержит более 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, я не могу определить проблему

Мне нужно знать, если я что-то пропускаю, или есть лучший способ реализовать поиск.

...