CREATE INDEX NAME_OF_MY_INDEX ON NAME_OF_MY_TABLE (NAME_OF_FIELD(3));
-- Временная таблица для разложения qwe на буквы
CREATE TEMPORARY TABLE qwe (letter VARCHAR (10));
INSERT INTO qwe (letter) VALUES('q');
INSERT INTO qwe (letter) VALUES('w');
INSERT INTO qwe (letter) VALUES('e');
-- Временная таблица для разложения rty на буквы
CREATE TEMPORARY TABLE rty (letter VARCHAR (10));
INSERT INTO rty (letter) VALUES('r');
INSERT INTO rty (letter) VALUES('t');
INSERT INTO rty (letter) VALUES('y');
-- Временная таблица для разложения uio на буквы
CREATE TEMPORARY TABLE uio (letter VARCHAR (10));
INSERT INTO uio (letter) VALUES('u');
INSERT INTO uio (letter) VALUES('i');
INSERT INTO uio (letter) VALUES('o');
-- Тестовая таблица для поиска.
CREATE TEMPORARY TABLE abc (letter VARCHAR (10));
INSERT INTO abc (letter) VALUES('u');
INSERT INTO abc (letter) VALUES('qtiskdk');
INSERT INTO abc (letter) VALUES('eyudkdk');
INSERT INTO abc (letter) VALUES('zzzzzzzzz');
-- SELECT CONCAT(qwe.letter, rty.letter, uio.letter, '%') AS pref FROM qwe, rty, uio -- этот запрос вернет cross join для всех сочетаний букв в нужном порядке. Для всех сочетаний будет добавлен знак % в конце.
-- Теперь объединяем две таблицы и выводим только те записи которые удовлетворяют условию LIKE
SELECT * FROM abc AS t
INNER JOIN (SELECT CONCAT(qwe.letter, rty.letter, uio.letter, '%') AS pref FROM qwe, rty, uio) AS c
ON t.letter LIKE c.pref