Будет ли индекс FULLTEXT в столбце соединения ускорять запрос в MySQL?

Я новичок в этом полнотекстовом индексе, и я знаю, что полный текст используется для индексации столбцов текста или varchar для быстрого поиска.

Я также читал, что полнотекстовые индексы используются только с синтаксисом (ПОИСКПОЗ...ПРОТИВ)? Это правда?

У меня возник вопрос: если я использую полнотекстовый индекс для столбца, ускорит ли он запрос или нет?

Запрос:

SELECT * FROM table1 a INNER JOIN table2 b ON a.text = b.text;

полнотекстовый индекс устанавливается для текста столбца для обеих таблиц.

Спасибо.

Наилучшие пожелания,


person Khadija Khalfallah    schedule 01.03.2016    source источник
comment
Вы можете определить полнотекстовый индекс для таблиц InnoDb, имеющих текстовый столбец. Это может ускорить запросы и операции DML с данными, содержащимися в этих столбцах, пропуская любые слова, определенные как стоп-слова. Вы можете найти обзор производительности здесь: percona.com/blog/2013/07/31/   -  person Kiran Krishnan    schedule 01.03.2016


Ответы (1)


Ответ на первую часть вашего вопроса об использовании полнотекстового индекса приведен здесь: http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

Полнотекстовый поиск выполняется с использованием синтаксиса MATCH() ... AGAINST.

Вторая часть посвящена внутреннему объединению двух таблиц на основе полей с полнотекстовыми индексами. Решается добавлением в таблицу table1 и table2 полей texthash. Необходимо заполнить и поддерживать это хеш-значение (кодом приложения или триггерами mysql). Вы можете использовать для этого поля обычный индекс btree, и ваш sql-запрос будет изменен до версии ниже и выполнен быстро:

SELECT * FROM table1 a INNER JOIN table2 b ON a.texthash = b.texthash;
person alexander.polomodov    schedule 01.03.2016