From edc1ab949af21ece0954c9ebf4613b4e6be5ba32 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Fri, 16 Aug 2024 22:21:37 +0200 Subject: [PATCH] perf(captcha): simplify count() query for user ids Using .count() isn't great as it runs a count query on a subquery which selects all fields in the Users table. This rewrites it into a simple SELECT count(ID) from USers query. --- aurweb/captcha.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/aurweb/captcha.py b/aurweb/captcha.py index 4daf7c45..52e834ac 100644 --- a/aurweb/captcha.py +++ b/aurweb/captcha.py @@ -3,6 +3,7 @@ import hashlib from jinja2 import pass_context +from sqlalchemy import func from aurweb.db import query from aurweb.models import User @@ -11,7 +12,8 @@ from aurweb.templates import register_filter def get_captcha_salts(): """Produce salts based on the current user count.""" - count = query(User).count() + count = query(func.count(User.ID)).scalar() + salts = [] for i in range(0, 6): salts.append(f"aurweb-{count - i}")