В зависимости от размера набора данных решение REGEXP может быть или не быть правильным ответом. Если вы пытаетесь получить маленький кусочек большого набора данных,
select * from table
where field like 'ab%'
or field like 'cd%'
or field like "ef%"
or...
может быть переписано за кулисами как
select * from table
where field like 'ab%'
union all
select * from table
where field like 'cd%'
union all
select * from table
where field like 'ef%'
Выполнение трех индексных сканирований вместо полного сканирования.
Если вы знаете, что идете только после первых двух символов, создание индекса на основе функций также может быть хорошим решением. Если вам действительно нужно оптимизировать это, используйте глобальную временную таблицу для хранения интересующих значений и выполните полусоединение между ними:
select * from data_table
where transform(field) in (select pre_transformed_field
from my_where_clause_table);