У меня есть почти 100 миллионов наименований продуктов, присутствующих в БД. Каждый раз я отображаю 100 продуктов в пользовательском интерфейсе, а после прокрутки отображаются следующие 100 и так далее. Для этого я использовал Django RawQuery, так как моя база данных (mysql) не поддерживает отдельную функциональность.
Здесь «выборка» — это функция обратного вызова, используемая в другом файле:
def fetch(query_string, *query_args):
conn = connections['databaseName']
with conn.cursor() as cursor:
cursor.execute(query_string, query_args)
record = dictfetchall(cursor)
return record
Вот основной вызов в views.py Итак, пример фрагмента исходного кода запроса:
record= fetch("select productname from abc")
Здесь, если я собираюсь применить критерии сортировки к записям
record= fetch("select productname from abc orderby name ASC")
То же самое делаем и для спуска. В результате для отображения отсортированных продуктов требуется так много времени.
Я хочу, чтобы я запрашивал 1 раз и сохранял в объекте python, а затем начинал применять по возрастанию или по убыванию.
Так что в первый раз, когда он загружается, это займет некоторое время, но затем, применяя критерии сортировки, он не будет обращаться к базе данных, чтобы применять сортировку для каждого раза, когда сортировка выполняется.
В целом хочу сказать, повысить производительность в случае сортировки записей.