Насчёт ускорить — точно не скажу, но я бы посмотрел в сторону пагинации, это ответ на второй вопрос. По шагам вкратце:
1) Узнаешь количество записей через SELECT COUNT(*)
2) По порциям считываешь данные через LIMIT и OFFSET, при этом показывая прогресс, считая его на основании количества записей
Я вот кстати не помню, скюлайт умеет в оффсет нормально, или оно таки читает с начала, просто потом часть отбрасывает? А то какие то базы это умеют, какие то нет