Итак, вот моя проблема.
У меня есть база данных, которая импортирует огромные данные из CSV. Он содержит около 32000 записей, но содержит около 200 столбцов заголовков, поэтому стандартный выбор выполняется медленно.
Когда я делаю:
MyModel.all
или MyModel.eager_load.all
загрузка всех записей занимает от 45 секунд до минуты.
Идея заключалась в том, чтобы использовать предел для извлечения может быть 1000 записей, например:
my_model = MyModel.limit(1000)
Таким образом, я могу получить последний идентификатор, например:
last_id = my_model.last.id
Для загрузки следующих 1000 запросов я буквально использую
my_model.where('id > ?', last_entry).limit(1000)
# then I set last_entry again, and keep repeating the process
last_entry = my_model.last.id
Но это кажется излишним и не кажется правильным.
Есть ли лучший или более легкий способ сделать это?
Заранее спасибо.