Вот что я делаю, с подобной настройкой, которая имеет тысячи строк для UITableView.
У меня есть массив (на самом деле вектор st ++ C ++), где каждый элемент в массиве отображается в строку в UITableView. Массив, заполненный идентификаторами записей sqlite для элементов, которые я хочу отобразить. Объем памяти, занимаемый массивом, составляет 4 байта на строку.
cellForRowAtIndexPath ищет идентификатор записи в массиве, а затем запрашивает у sqlite поля, необходимые для ячейки. Это очень быстро, так как SQLite индексирует столбец идентификатора записи.
Мой на самом деле немного сложнее, так как у меня есть разделы TableView, а также индекс TableView. Но не слишком сложным.