千万级别的数据,单纯的要做一个分页展示的列表,怎么样做最好

有一个需求,就是单纯的展示千万级别的数据,分页展示,使用的是JPA,原生查询点击下一页就需要花费4秒左右,初步分析是因为select count这个查询比较耗时,还得支持其他各种查询条件。 如果想让查询做到1s左右的速度,怎么解决呢?
要分页的话select count操作是必不可少的吧? 求解答!!

阅读 3.7k
4 个回答

什么信息都没有,你想让人怎么回答?
数据库用的什么?mysql?
mysql可以用explain查你的语句有没有用到索引

看场景了,有些分页是不显示页数的,只有下一页类似百度.
实在需要可以缓存count值, 前端缓存后端缓存都可以.

"SELECT reltuples FROM pg_class r WHERE relkind = 'r' AND relname = 'myTables';"
这个非常快。但是是估计值。

可以用下面的语句提前更新一次:
vacuum "myTables";
vacuum;

  1. 字段加索引
  2. 使用select ${字段} from ${表名} where ${条件} and id > ${id} limit ${pageIndex}, ${pageSize} 这样的SQL,注意使用id > ${id}这样能更快一些。这就需要你将上一页查询到的最大id值传入下一次的查询。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题