Optimize comment pagination in post_id, viewmore
Against a clean seeded DB, reduces `GET /post/1/` from 63 queries to 26 by removing redundancies and slow lazy-loaded queries during top comment pagination. Also applies eager loading to /viewmore/ with the expected reduction from 5*(N comments) queries to ~12/request. For testing locally, use a newly seeded DB to ensure Comment.descendant_count is populated. Ref: #485
This commit is contained in:
parent
946ee6291d
commit
007f0a3f02
4 changed files with 94 additions and 172 deletions
|
@ -4,6 +4,7 @@ import sqlalchemy
|
|||
from werkzeug.security import generate_password_hash
|
||||
from files.__main__ import app
|
||||
from files.classes import User, Submission, Comment, Vote, CommentVote
|
||||
from files.helpers.comments import bulk_recompute_descendant_counts
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
|
||||
db = SQLAlchemy(app)
|
||||
|
@ -262,5 +263,8 @@ def seed_db():
|
|||
comment.realupvotes = comment.upvotes - comment.downvotes
|
||||
db.session.add(comment)
|
||||
|
||||
print("Computing comment descendant_count")
|
||||
bulk_recompute_descendant_counts(db=db.session)
|
||||
|
||||
db.session.commit()
|
||||
db.session.flush()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue