请教,多张大表联合查询的情况下,分页查询性能优化方案

minhongxing 2020-06-13 10:37:26
要提升一个经常用的分页列表界面响应速度(里面的数据是从几张几百万的数据表关联查询出来,且暂时不方便用冗余表实现),查询分页列表数据到比较快(用了索引),但每次查询列表用到的记录总数非常慢。请教各位大神有无更好的方案
...全文
422 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rumlee 2020-06-17
  • 打赏
  • 举报
回复
1、就像楼上说的,如果记录总数实时性要求不高的情况下做缓存,然后定时刷新 2、如果记录总数要求强一致的话,那就把需要统计条数的条件先分析分析,然后针对每种条件做一个字段,每次往数据库里面插入或者删除记录的时候,根据条件修改对应的记录数,这种情况适合更新少而查询多的情况。如果更新非常频繁则不适合。
s478853630 2020-06-17
  • 打赏
  • 举报
回复
引用 楼主 minhongxing 的回复:
要提升一个经常用的分页列表界面响应速度(里面的数据是从几张几百万的数据表关联查询出来,且暂时不方便用冗余表实现),查询分页列表数据到比较快(用了索引),但每次查询列表用到的记录总数非常慢。请教各位大神有无更好的方案
实时性要求不高的话,记录总数做缓存,然后定时刷缓存, 分页时只运行limit,记录总数读缓存就不运行count(*),两千万数据,分页100毫秒左右,亲测!
minhongxing 2020-06-13
  • 打赏
  • 举报
回复
显示记录查询的非常快,就是分页的总记录数查询非常慢。针对总记录数,查询条件和索引优化的方式非常有限,又必须用到多表关联(查询条件原因)
maradona1984 2020-06-13
  • 打赏
  • 举报
回复
查询条数可以删减那些没有查询条件的关联表. 如果还慢,那就减少关联表,代码中拼接逻辑,如果查询条件落在关联表上,尽量转化成查主表的关联的id上,减少模糊查询,大多数模糊查询意义不大. 就好比你想查询客户数据,但有个条件是根据项目名来模糊搜索,需要关联到项目表,但实际上这个条件意义不大,项目名称的模糊对业务有意义?先联想出具体项目的id,再根据项目id查询客户,这样你的条件就是落到客户表上了.
LikeWatchStar 2020-06-13
  • 打赏
  • 举报
回复
联合查询并不一定要直接查表,你可以通过存储过程把几张表里的关键数据先取出来,比如你做的是一个统计查询,你只需要把每张表用到的列group by+count出来到临时表,最后再从几张临时表里select出你想要的结果,反正我是做过一个3张几百万的数据连接的统计图,就是这样做的

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧