В моем представлении есть панель поиска, которая выполняет поиск крайне медленно. Есть четыре таблицы, которые я пытаюсь получить из Ресторанов, Еды, Меню, Качества.
Представление отправило ПК за едой. У меня также есть переменная local_zip и radius, чтобы найти ресторан рядом с пользователем. Я использую это, чтобы ограничить количество ресторанов. Затем я фильтрую объекты по выбранной еде и ресторанам рядом с ними. Затем я получаю некоторую качественную информацию о ресторанах.
Когда я запускаю его в оболочке, это на самом деле нормальная скорость. Ни одна строка не занимает слишком много времени, не знаю, почему это так медленно на сервере. Что очень медленно, так это отображение данных в оболочке. Например, если я просто попробую запустить «таблицу». Отображение данных занимает много времени.
Вот код, который работает очень медленно:
local_zip = request.session['local_zip']
radius = request.session['radius']
in_radius = [z.zip for z in zcdb.get_zipcodes_around_radius(local_zip, radius)]
list_ids = ['13', '427', '428'] #('ZIP', radius in miles)
# Restaurants table has about 500 observations
find_objects = Restaurants.objects.filter(Q(zipcode__in=in_radius) | Q(id__in=list_ids)).distinct()
# Menu table is large with about a million observation
objects_selected = Food.objects.filter(menu__menuid=pk)
table = objects_selected.filter(restaurants__in=find_objects).order_by('price').prefetch_related('restaurants')
#Food table has 10k objects
food_info = Food.objects.filter(foodid=pk)
# quality has about 600K objects
quality_info = Quality.objects.filter(food__foodid=pk,locality = str(5))[:1]