From 98f6ada0e2058d67d91fb6c16482411ec2ca0967 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Sun, 21 May 2023 16:59:56 +0100 Subject: Fixed #34580 -- Avoided unnecessary computation of selected expressions in SQLCompiler. Performance regression in 278881e37619278789942513916acafaa88d26f3. Co-authored-by: David Smith --- django/db/models/sql/compiler.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'django/db/models/sql') diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py index a7a8c98b99..b28dc925ba 100644 --- a/django/db/models/sql/compiler.py +++ b/django/db/models/sql/compiler.py @@ -331,7 +331,9 @@ class SQLCompiler: default_order, _ = ORDER_DIR["DESC"] selected_exprs = {} - if select := self.select: + # Avoid computing `selected_exprs` if there is no `ordering` as it's + # relatively expensive. + if ordering and (select := self.select): for ordinal, (expr, _, alias) in enumerate(select, start=1): pos_expr = PositionRef(ordinal, alias, expr) if alias: -- cgit v1.3