Skip to content

Commit 15ede5d

Browse files
committed
Delay filtering in optimize_single for performance, see #86
1 parent 750a732 commit 15ede5d

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

query_optimizer/compiler.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,15 @@ def optimize_single(
5555
max_complexity: Optional[int] = None,
5656
) -> Optional[TModel]:
5757
"""Optimize the given queryset for a single model instance by its primary key."""
58-
queryset = queryset.filter(pk=pk)
59-
6058
optimizer = OptimizationCompiler(info, max_complexity=max_complexity).compile(queryset)
6159
if optimizer is None: # pragma: no cover
62-
return queryset.first()
60+
return queryset.filter(pk=pk).first()
6361

6462
cached_item = get_from_query_cache(queryset.model, pk, optimizer, info)
6563
if cached_item is not None:
6664
return cached_item
6765

66+
queryset = queryset.filter(pk=pk)
6867
optimized_queryset = optimizer.optimize_queryset(queryset)
6968
store_in_query_cache(optimized_queryset, optimizer, info)
7069

0 commit comments

Comments
 (0)