Django Speed Up Aggregates
Я использую Django в качестве панели аналитики, где я получаю данные о заказах из Takealot Seller API и затем сохраняю каждый заказ в SalesModel. За месяц я получаю около 100000 заказов, и когда я пытаюсь агрегировать их с помощью следующего кода
month = 1
year = 2024
SalesModel.objects.filter(account=user.pk, store=store.pk, order_date__year=year, order_date__month=month).aggregate(Sum("selling_price"))["selling_price__sum"]
продажная_цена - это IntegerField
, а дата_заказа - DatetimeField
.
и еще 10 похожих KPI, а также тренды продаж продуктов (которые рассчитываются на ходу).
trendData = SalesModel.objects.filter(account=user.pk, store=store.pk, order_date__year=year, order_date__month=month).values("order_date__year","order_date__month","order_date__day").order_by("order_date__year","order_date__month","order_date__day").annotate(total=Sum('selling_price'),total_units=Sum("quantity"))
На это уходит 2-3 секунды, как ускорить процесс? Я уже использую кэш, который сохраняет данные в течение 5 минут. Должна ли у меня быть отдельная модель, в которую я добавляю KPI, или что мне делать?
Хочется ускориться.