问题:数据量大,分页查询时卡顿,如何解决?
解决:通过join方式,先查询主键,再查询内容
方法:
offset_num = (page - 1) * pagesize
sub_q = select(
User.id).filter_by(**obj_get).order_by(
User.id.asc()).offset(
offset_num).limit(pagesize).subquery()
q = select(
User.uid, User.username, User.fullname, User.national_id, User.phone, User.email,
User.gender, User.last_login, User.status, User.create_time,
User.expire_time).join(sub_q, User.id == sub_q.c.id)
r = await db.execute(q)
return r.all()