Во-первых, не думайте, что SQLite - это ваше узкое место.Я сделал такое же предположение в своем собственном приложении и потратил дни, пытаясь оптимизировать доступ к базе данных, только для того, чтобы запустить Instruments против нее и обнаружить, что в моем интерфейсе была медленная процедура обработки строк, которая приводила к сбою.
Сначала используйте Time Profiler и Object Allocations, чтобы проверить, где находятся ваши горячие точки в коде.SQLite смехотворно быстр.
Тем не менее, при 4000 строках вы, вероятно, столкнетесь с проблемами памяти, по крайней мере, если попытаетесь загрузить все из них в массив для отображения на экране.Я рекомендую импортировать эти данные в базу данных Core Data SQLite и использовать NSFetchedResultsController с размером пакета, установленным для его запроса на выборку, который будет немного больше, чем число строк, отображаемых на экране.
Базовые данные будут обрабатыватьзагрузка / выгрузка пакетных данных таким образом, это означает, что только небольшая часть базы данных загружается в память одновременно.Это может привести к огромному ускорению (особенно при начальной загрузке) и значительно уменьшит использование памяти.Он также делает это, используя тривиальное количество кода.