Skip to content

Commit 4562afb

Browse files
committed
Massive performance improvement
No clue why I put in a super inefficient count query
1 parent 4c6b14f commit 4562afb

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

src/application.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ def index():
135135

136136
data = db.execute(
137137
"SELECT * FROM announcements ORDER BY id DESC LIMIT 10 OFFSET ?", page)
138-
length = len(db.execute("SELECT * FROM announcements"))
138+
length = db.execute("SELECT COUNT(*) AS cnt FROM announcements")[0]["cnt"]
139139

140140
if not session or 'username' not in session:
141141
template = read_file(app.config['HOMEPAGE_FILE'])
@@ -664,15 +664,15 @@ def problems():
664664
"problems.id=problem_solved.problem_id WHERE (draft=0 AND category=?)"
665665
"GROUP BY problems.id ORDER BY id ASC LIMIT 50 OFFSET ?"),
666666
category, page)
667-
length = len(db.execute("SELECT * FROM problems WHERE (draft=0 AND category=?)",
668-
category))
667+
length = db.execute(("SELECT COUNT(*) AS cnt FROM problems WHERE "
668+
"draft=0 AND category=?"), category)[0]["cnt"]
669669
else:
670670
data = db.execute(
671671
("SELECT problems.*, COUNT(DISTINCT problem_solved.user_id) AS sols "
672672
"FROM problems LEFT JOIN problem_solved ON "
673673
"problems.id=problem_solved.problem_id WHERE draft=0 "
674674
"GROUP BY problems.id ORDER BY id ASC LIMIT 50 OFFSET ?"), page)
675-
length = len(db.execute("SELECT * FROM problems WHERE draft=0"))
675+
length = db.execute("SELECT COUNT(*) AS cnt FROM problems WHERE draft=0")[0]["cnt"] # noqa E501
676676

677677
categories = db.execute("SELECT DISTINCT category FROM problems WHERE draft=0")
678678
categories.sort(key=lambda x: x['category'])
@@ -768,7 +768,7 @@ def draft_problems():
768768
page = (int(page) - 1) * 50
769769

770770
data = db.execute("SELECT * FROM problems WHERE draft=1 LIMIT 50 OFFSET ?", page)
771-
length = len(db.execute("SELECT * FROM problems WHERE draft=1"))
771+
length = db.execute("SELECT COUNT(*) AS cnt FROM problems WHERE draft=1")[0]["cnt"]
772772

773773
return render_template('problem/draft_problems.html',
774774
data=data, length=-(-length // 50))

src/views/admin.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ def admin_submissions():
5959
page = (int(page) - 1) * 50
6060
modifier += " 1=1"
6161

62-
length = len(db.execute(("SELECT submissions.*, users.username FROM submissions "
63-
"LEFT JOIN users ON user_id=users.id") + modifier, *args))
62+
length = db.execute(("SELECT COUNT(*) AS cnt FROM submissions LEFT JOIN users ON "
63+
"user_id=users.id") + modifier, *args)[0]["cnt"]
6464

6565
args.append(page)
6666
submissions = db.execute(("SELECT submissions.*, users.username FROM submissions "
@@ -80,7 +80,7 @@ def admin_users():
8080
page = (int(page) - 1) * 50
8181

8282
data = db.execute("SELECT * FROM users ORDER BY id ASC LIMIT 50 OFFSET ?", page)
83-
length = len(db.execute("SELECT * FROM users"))
83+
length = db.execute("SELECT COUNT(*) AS cnt FROM users")[0]["cnt"]
8484

8585
perms = db.execute(("SELECT * FROM user_perms WHERE user_id IN "
8686
"(SELECT id FROM users ORDER BY id ASC LIMIT 50 OFFSET ?)"), page)
@@ -352,7 +352,7 @@ def preview_homepage():
352352

353353
data = db.execute(
354354
"SELECT * FROM announcements ORDER BY id DESC LIMIT 10 OFFSET ?", page)
355-
length = len(db.execute("SELECT * FROM announcements"))
355+
length = db.execute("SELECT COUNT(*) AS cnt FROM announcements")[0]["cnt"]
356356

357357
template_type = read_file(app.config['HOMEPAGE_FILE'])[0]
358358
return render_template(f"home_fragment/home{template_type}.html",

0 commit comments

Comments
 (0)