From: Stewart Smith Date: Fri, 10 Aug 2018 08:01:02 +0000 (+1000) Subject: Be particular over check_set and series prefetch for /list/ X-Git-Tag: v2.2.0-rc1~295 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b8b6fb5261dc2cb1c95bc82ab7a5466e6699d03;p=thirdparty%2Fpatchwork.git Be particular over check_set and series prefetch for /list/ At this point it shaves at most 1-2ms off the query time for /linuxppc-dev/list/ Signed-off-by: Stewart Smith Reviewed-by: Stephen Finucane --- diff --git a/patchwork/views/__init__.py b/patchwork/views/__init__.py index f66963f5..5942ded8 100644 --- a/patchwork/views/__init__.py +++ b/patchwork/views/__init__.py @@ -19,6 +19,7 @@ from django.contrib import messages from django.shortcuts import get_object_or_404 +from django.db.models import Prefetch from patchwork.filters import Filters from patchwork.forms import MultiplePatchForm @@ -26,6 +27,8 @@ from patchwork.models import Bundle from patchwork.models import BundlePatch from patchwork.models import Patch from patchwork.models import Project +from patchwork.models import Check +from patchwork.models import Series from patchwork.paginator import Paginator @@ -290,7 +293,11 @@ def generic_list(request, project, view, view_args=None, filter_settings=None, 'name', 'date') # we also need checks and series - patches = patches.prefetch_related('check_set', 'series') + patches = patches.prefetch_related( + Prefetch('check_set', queryset=Check.objects.only( + 'context', 'user_id', 'patch_id', 'state', 'date'))) + patches = patches.prefetch_related( + Prefetch('series', queryset=Series.objects.only('name'))) paginator = Paginator(request, patches)