问题:数据量大,分页查询时卡顿,如何解决?
解决:通过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()
SELECT * FROM product a JOIN (select id from product limit 866613, 20) b ON a.ID = b.id
参考:
https://mp.weixin.qq.com/s/3up38eg917s66fmmOvjfdg
https://blog.csdn.net/weixin_40123451/article/details/120903720