Как ускорить работу сайта на Django?

Документация Django рекомендует первым делом сделать индексацию базы данных. Индекс БД какого-либо поля может представлять собой, например, дополнительный столбец в таблице БД. В нем записываются значения, уникальные для каждого значения поля, по которому строится индекс. Поиск по такому столбцу производится значительно быстрее. Строить индекс рекомендуется по тем полям, которые участвуют в поиске или фильтрах.
Например, имеем цикл по дням, в котором суммируется ежедневная выручка:
    for day in days:
        cashbox = ctr.objects.get(date=day, salon=salon)
        proceeds = cashbox.get_proceeds()
        sum += proceeds
Чтобы ускорить выполнение это цикла, в модели ctr следует добавить:
    class Meta:
        indexes = [
            models.Index(fields=['date']),
            models.Index(fields=['salon'])
        ]
После введения индекса работа такого цикла можно ускориться в десятки раз. У меня получилось 25 раз - с 5 секунд до 0,2 с - после того, как я сделал индексы по всех моделях, входящих в вычисления в данном цикле.
Цикл выше можно записать немного иначе:
    qs = ctr.objects.filter(salon=salon)
    for day in days:
        cashbox = qs.get(date=day)
        proceeds = cashbox.get_proceeds()
        sum += proceeds
т.е. сначала получить общий query set из базы данных, а в цикле брать уже конкретный экземпляр. Именно так рекомендует делать документация Django, и по моим замерам выигрыш составляет 5-10%.