Ответ 1
От кого-либо, у кого есть реальный опыт, как LIKE-запросы выполняются в MySQL в многомиллионных таблицах строк с точки зрения скорости и эффективности, если поле имеет простой INDEX?
Не так хорошо (я думаю, что у меня были поисковые запросы в диапазоне 900 КБ, не могу сказать, что у меня есть опыт в многомиллионных LIKE).
Обычно вы должны ограничивать поиск любым способом, но это зависит от структуры таблицы и использования приложения.
Кроме того, в некоторых случаях использования Веб можно реально улучшить производительность и пользовательский интерфейс с помощью некоторых трюков, таких как индексирование отдельных ключевых слов и создание таблицы ключевых слов и таблицы rows_contains_keyword (id_keyword, id_row). Таблица ключевых слов используется с AJAX, чтобы предлагать условия поиска (простые слова) и компилировать их в целые числа - id_keywords. В этот момент поиск строк, содержащих эти ключевые слова, становится очень быстрым. Обновление таблицы по одной строке за один раз также довольно показательно; конечно, пакетные обновления становятся определенными "не делают".
Это не так похоже на то, что уже сделано полный текст MATCH..IN BOOLEAN MODE, если используется только оператор +:
SELECT * FROM arts WHERE MATCH (title) AGAINST ('+MySQL +RDBMS' IN BOOLEAN MODE);
Вероятно, вам нужна таблица InnoDB:
Логические полнотекстовые поисковые запросы имеют следующие характеристики:
- Они автоматически не сортируют строки в порядке уменьшения релевантности....
- Таблицы InnoDB требуют индекса FULLTEXT для всех столбцов выражения MATCH() для выполнения булевых запросов. Булевы запросы к поисковому индексу MyISAM могут работать даже без индекса FULLTEXT, хотя поиск, выполненный таким образом, будет довольно медленным....
- Они не используют порог 50%, который применяется к поисковым индексам MyISAM.
Можете ли вы дать больше информации о конкретном случае?