Я делаю необработанный SQL-запрос, используя Django. Мне нужно сделать разбиение на страницы вывода, потому что для некоторых входных данных эти запросы возвращают более 100 тыс. Результатов, что занимает очень много времени. Я не могу использовать Django ORM, потому что мой sql-запрос содержит взаимодействие с довольно специфическим плагином postgres (картридж RDKit PostgreSQL).
В настоящее время я получаю все результаты и делаю нумерацию страниц только после этого. Тем не менее, это действительно узкое место в моей программе, поскольку получение всех результатов может занять более минуты для более чем 100 000 строк.
# making a specific sql statement
sql = compose_sql_statement(parameters)
molecules = Molecule.objects.raw(sql)
paginator = Paginator(molecules, 10)
molecules_page = paginator.get_page(page)