Я выполняю оператор выбора SQLite с несколькими предложениями LIKE в приложении для iPhone. Заявления напоминают следующее:
SELECT * FROM mytable
WHERE name LIKE 'Smith %'
OR name LIKE '% Smith %'
OR name LIKE 'Smith_%'
OR name LIKE '% Smith_%';
Выполнение в настоящее время занимает около 0,5 секунды на моем ноутбуке и около 2 секунд на устройстве. Я не могу проиндексировать столбец «name» в «mytable» из-за нехватки места.
Каждое из предложений LIKE очень похоже - если не получится, скорее всего, так и будет. Поэтому я хотел бы сгруппировать их вместе, как оптимизировать мой поиск.
Можно ли это сделать, скажем, через REGEXP? Если да, то как и по умолчанию включен REGEXP?
Edit. Я пытаюсь сделать заявления в соответствии с:
SELECT * FROM mytable WHERE name REGEXP '[ _]?Smith[ _,]';