From ba10fc80418c61cbd6a1cb0ba2e892fe99e7e5e6 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 7 Jul 2026 10:48:50 +0200 Subject: [PATCH] Event product list: Fix another performance issue for large series (#6331) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a follow-up for #6318, basically the same problem but in a neighboring query. Performance comparison for real-world event with 13k subevents: In [15]: %time get_grouped_items(e, subevent=se, channel=e.organizer.sales_channels.get(identifier="web")) CPU times: user 49.1 ms, sys: 3.79 ms, total: 52.9 ms Wall time: 1.12 s Out[15]: ([], True In [16]: %time get_grouped_items_patched(e, subevent=se, channel=e.organizer.sales_channels.get(identifier="web")) CPU times: user 30.2 ms, sys: 445 μs, total: 30.6 ms Wall time: 45.3 ms Out[16]: ([], True) --- src/pretix/presale/views/event.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py index ff4597193..6c3fc7d23 100644 --- a/src/pretix/presale/views/event.py +++ b/src/pretix/presale/views/event.py @@ -155,8 +155,8 @@ def get_grouped_items(event, *, channel: SalesChannel, subevent=None, voucher=No ).filter( variation_q, Q(all_sales_channels=True) | Q(limit_sales_channels=channel), + Exists(Quota.variations.through.objects.filter(quota__subevent_id=subevent, itemvariation_id=OuterRef("pk"))), active=True, - quotas__isnull=False, subevent_disabled=False ).prefetch_related( *prefetch_membership_types,