Если вы извлекаете базу данных до того, как таблица сможет загрузиться, то разделение ее ничего не изменит. И основным потоком является поток пользовательского интерфейса, поэтому его блокировка с долгой выборкой sql задержит загрузку вашего табличного представления.
Вам не нужно иметь 100 000 строк, чтобы можно было отображать максимум 10 - 20 строк на экране.
Почему бы просто не получить выборку для счетчика в numberOfRowsInSection
и сделать выборку для 1000 элементов в cellForRowAtIndexPath (или менее), идея состоит в том, чтобы получить то, что вам нужно для отображения, как можно быстрее, а затем извлечь для остальных ваши данные по мере необходимости.
Например, если человек прокручивает, а у вас есть 1000 строк, а этот человек прокручивает до строки 700, это может быть временем для получения другой 1000.
В зависимости от того, что делает ваше приложение и как часто нужно выполнять прокрутку, это может быть способом сделать это.