Оптимизация SQLite множественного поиска LIKE для iOS - PullRequest
2 голосов
/ 09 июня 2011

Я выполняю оператор выбора 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[ _,]';

1 Ответ

4 голосов
/ 10 июня 2011

SQLite на самом деле имеет встроенный механизм полнотекстового поиска. Вы можете рассмотреть возможность его использования.

http://www.sqlite.org/fts3.html#section_1

...