Ответ 1
Update
Как и в MySQL 5.6
, а затем InnoDB
таблицы поддерживают Match... Against
.
Первая намного лучше. В таблицах MyISAM он будет использовать полный текстовый индекс для этих столбцов. Другой выполнит полное сканирование таблицы, выполнив concat в каждой строке, а затем сравните.
LIKE
эффективен только в том случае, если вы делаете это против:
- столбец (не результат функции, если ваш конкретный поставщик базы данных не поддерживает функциональные индексы - например, Oracle - и вы их используете);
- начало столбца (т.е.
LIKE 'blah%'
в отличие отLIKE '%blah%'
); и - индексированный столбец.
Если какое-либо из этих условий неверно, единственный способ выполнения SQL-запроса выполнить запрос - выполнить полное сканирование таблицы. Это можно использовать примерно в 10-20 тысяч строк. Кроме того, он быстро становится непригодным для использования.
Примечание.. Одна проблема с MATCH на MySQL заключается в том, что она, похоже, соответствует целым словам, поэтому поиск "bla" не будет соответствовать столбцу со значением "blah", но поиск 'bla *' будет.