我的视图有一个搜索栏,其搜索速度非常慢。我正尝试从餐厅,食物,菜单,质量中获取四个表信息。
该视图发送了一个pk来获取食物。我也有一个local_zip和radius变量来查找用户附近的餐厅。我用它来限制餐厅的数量。 然后,我通过选择的食物和附近的餐馆来过滤对象。然后,我在餐馆获取一些质量信息。
当我在shell中运行它时,它实际上是正常速度。没有一行会花费超长的时间,不知道为什么它在服务器上这么慢。极其缓慢的是在shell中显示数据。例如,如果我只是尝试运行“表”。显示数据需要很长时间。
这是运行缓慢的代码:
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]