Первое, что нужно отметить, это то, что SQLite не будет использовать индекс для предложений LIKE, даже если они имеют форму LIKE '...%' (например, LIKE 'Fred%'), причем в большинстве последовательностей сопоставлениячувствительны к регистру.Наблюдаемое вами улучшение производительности связано с использованием SQLite так называемого поиска по индексу - он может выполнять поиск по индексу, а не просматривать всю таблицу.
15 секунд для 700 000 записей - это неплохо, вНа самом деле речь идет о том, что я получаю по очень похожему запросу.Чтобы добиться какого-либо улучшения в этом, вы должны изучить полнотекстовый поиск (FTS).Это включает в себя гораздо больше работы, чем простое добавление индекса, но это может быть путь для вас.
Если они запрашивают возвращает много строк, и вы используете их для заполнения табличного представления, тамможет быть другая проблема с производительностью из-за необходимости обрабатывать так много строк, даже если вы только извлекаете идентификаторы строк.Мое решение состояло в том, чтобы ограничить число извлекаемых строк примерно до 5000 на том основании, что никто не захочет прокручивать больше, чем это.