MySQL совпадает с другим критерием поиска - PullRequest
0 голосов
/ 04 марта 2019

У меня есть простой запрос MySQL, однако, когда я добавляю другой критерий поиска, он не может выполнить поиск за разумное время в течение 9000 секунд.Второй столбец (col2) проиндексирован, поэтому я не уверен, как выполнить этот запрос быстрее?Col1 установлен в FULL TEXT и работает быстро, когда работает без второго критерия.Любая помощь в этом была бы отличной.Ниже приведен пример запроса:

SELECT *
FROM table
where
match(col1) against('word1') AND
col2 = 'word2' 
limit 500000

1 Ответ

0 голосов
/ 04 марта 2019

MySQL не будет обращаться к таблице, используя как индексы FULLTEXT, так и обычные индексы B-дерева.

См. https://dev.mysql.com/doc/refman/8.0/en/explain-output.html в разделе ОБЪЯСНИТЬ Типы соединения .Это также называется тип доступа .

Когда вы ОБЪЯСНИТЕ запрос, каждая ссылка на таблицу покажет один тип доступа, который используется для чтения таблицы.Например, по уникальному индексу, неуникальному индексу, сканированию таблиц и т. Д.

fulltext является одним из этих типов доступа.

Насколько я знаю, каждый доступТип является взаимоисключающим с другими типами соединения.Поэтому он будет либо выполнять полнотекстовый поиск, не используя другой индекс, либо он будет использовать ваш индекс для другого столбца, и в этом случае он не будет использовать полнотекстовый индекс.

Возможно, он все же лучшевыбор использования неполнотекстового индекса, если это помогает более эффективно выбирать узкое подмножество строк, чем полнотекстовый индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...