Можно ли оптимизировать запросы вида "... WHERE ... LIKE ..." в MySQL?
Индексы можно использовать для оптимизации запросов с условием "LIKE" в том случае, если аргумент для "LIKE" не является переменной и не начинается с маски "%".
Пример, в котором индексы используются:
SELECT * FROM tbl_name WHERE key_col LIKE 'John%';
Примеры, в которых индексы не используются:
SELECT * FROM tbl_name WHERE key_col LIKE '%John%';
SELECT * FROM tbl_name WHERE key_col LIKE other_col;
Как построить нужный индекс для текстового поля (VARCHAR, TEXT и т.п.)? Например, так:
CREATE INDEX idx_key_col ON tbl_name(key_col(10));