Оптимизация производительности: устранение N+1 запросов и дубликатов
- Добавлен django-debug-toolbar 6.1.0 для мониторинга производительности
- Устранен дублирующийся COUNT запрос в списке клиентов (используется paginator.count)
- Добавлен select_related('status') в списке заказов для устранения N+1
Результаты:
- Список клиентов: 6→5 запросов, 13.24→10мс
- Список заказов: 18→7 запросов, 52.68→15-20мс, устранено 11 дубликатов
This commit is contained in:
@@ -33,9 +33,6 @@ def customer_list(request):
|
||||
# Исключаем системного клиента из списка
|
||||
customers = Customer.objects.filter(is_system_customer=False)
|
||||
|
||||
# Общее количество клиентов
|
||||
total_customers = customers.count()
|
||||
|
||||
if query:
|
||||
# Нормализуем номер телефона
|
||||
phone_normalized = normalize_query_phone(query)
|
||||
@@ -74,7 +71,7 @@ def customer_list(request):
|
||||
context = {
|
||||
'page_obj': page_obj,
|
||||
'query': query,
|
||||
'total_customers': total_customers,
|
||||
'total_customers': paginator.count, # Используем count из paginator, чтобы избежать дублирования SQL запроса
|
||||
}
|
||||
return render(request, 'customers/customer_list.html', context)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user