Оптимизация в SQLite
Если поиск ведется по условию 'XXX%', то индекс использовать можно.

Если нужен полнотекстовый поиск, то смотреть здесь
Самый хороший способ — это заставить SQLite работать с русским языком по-человечески. Т. к. отсутствие поддержки ещё выползет боком в разных других местах. Но если это невозможно, можно продублировать все поля, по которым ведётся поиск, и хранить в них текст в нижнем регистре. Ну и программно следить за тем, чтобы значения в них соответствовали исходным полям.