Как улучшить множественный запрос для нескольких графиков на одной странице
Я хотел бы увеличить скорость загрузки страницы для моего сайта
Мне нужно написать код с группировкой различий по напр. данные, которые группируются по типу периода данные, которые группируются по стране данные, которые группируются по диапазону дат
Вопрос: как я могу улучшить свою кодировку для увеличения скорости запроса?
View.py
def get_queryset(self):
dateRange = self.request.query_params.get('dateRange')
if dateRange is not None:
datestart = datetime.datetime.strptime(dateRange.split('-')[0], "%Y%m%d").strftime("%Y-%m-%d")
dateend = datetime.datetime.strptime(dateRange.split('-')[1], "%Y%m%d").strftime("%Y-%m-%d")
else:
year_today = str((datetime.datetime.now().date() - datetime.timedelta(days=1)).year)
week_today = str((datetime.datetime.now().date() - datetime.timedelta(days=1)).isocalendar()[1] - 1)
datestart = datetime.datetime.strptime(year_today + '-W' + week_today + '-1', "%Y-W%W-%w")
dateend = datetime.datetime.strptime(year_today + '-W' + week_today + '-0', "%Y-W%W-%w")
queryset = ranking_page_data.objects.filter(Date_start__range=(datestart, dateend),
Period_Type="daily",
Order_Type="Gross Order").values('Country').annotate(
Sales_Euro=Sum('Sales_Euro'),
Orders=Sum('Orders'),
Unit=Sum('Unit'),
buyers=Sum('buyers'),
Visitors=Sum('Visitors'),
Pageview=Sum('Pageview'),
Conversion_Rate=Avg('Conversion_Rate')).order_by('-Sales_Euro')
queryset1 = ranking_page_data.objects.filter(Date_start__range=(datestart, dateend),
Period_Type="daily",
Order_Type="Gross Order").values('Platform').annotate(
Sales_Euro=Sum('Sales_Euro'),
Orders=Sum('Orders'),
Unit=Sum('Unit'),
buyers=Sum('buyers'),
Visitors=Sum('Visitors'),
Pageview=Sum('Pageview'),
Conversion_Rate=Avg('Conversion_Rate')).order_by('-Sales_Euro')
queryset2 = ranking_page_data.objects.filter(Date_start__range=(datestart, dateend),
Period_Type="daily",
Order_Type="Gross Order").values('Country','Platform').annotate(
Sales_Euro=Sum('Sales_Euro'),
Orders=Sum('Orders'),
Unit=Sum('Unit'),
buyers=Sum('buyers'),
Visitors=Sum('Visitors'),
Pageview=Sum('Pageview'),
Conversion_Rate=Avg('Conversion_Rate')).order_by('-Sales_Euro')
return queryset,queryset1,queryset2
и model.py
class ranking_page_data(models.Model):
ID = models.IntegerField()
Specific_Identity = models.TextField()
Country = models.TextField()
Platform = models.TextField()
Brand = models.TextField()
Period_Type = models.TextField()
Date_start = models.DateField()
Date_end = models.DateField()
Order_Type = models.TextField()
Date = models.TextField()
Time = models.TextField()
Conversion_Rate = models.FloatField()
Orders = models.IntegerField()
buyers = models.IntegerField()
Pageview = models.IntegerField()
Unit = models.IntegerField()
Visitors = models.IntegerField()
Exchange_rate = models.FloatField()
Sales_Euro = models.FloatField()
class Meta:
db_table = "web_ranking"
Спасибо за поддержку