关于分页查询的性能问题

2019-03-25 13:36|来源: 网路

问题:
现在项目中的分页查询是这样的:前台传递关键字 到controller 然后交由hibernate 去做分页查询 在这中间 就不可避免的需要得到 总条数 既然要获得总条数 就不可避免的要查询整个表记录 我认为在获得总条数 这一步可以做点文章 能否将总记录条数放进缓存??

javaeye的大牛或小牛能否给出一些思路 谢谢!
问题补充:
首先谢谢 [star022] 的回答

我想说下我的想法 有关于保存 总条数

我想在应用启动时 将每个模块的 总记录条数 放置于  ServletContext 中
以后每次操作(记录的添加|删除) 就更新 ServletContext 中相应的 总条数。
不知性能如何。 
问题补充:
谢谢 [star022]

相关问答

更多
  • 你可以把你的3张表查询的结果看成一张表,然后就成一张表的分页
  • 可不可以 在数组中就分好页 array(‘1’=>array(),'2'=>array()); 每次访问数组不同的下标 或者创建 视图应该也行
  • 首先你知道limit 的两个参数吧,如果limit 0,5 就是取前六条,具体跳转到多少页,是要经过计算的,比如说你一页显示5条,想跳转第二页,那么查询的数据应该是第6条到第10条对吧,然后limit 5,9。这个不是数据库操作啦,是算数问题咯。
  • MYSQL 分页最简单了. SELECT * FROM Account WHERE (usertype='base' or usertype='home' or usertype='salse') and logindate is not null order by logindate desc LIMIT 起始行, 每页多少行 LIMIT 接受一个或两个数字参数。 参数必须是一个整数常量。 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量, 第二个参数指定返回记录行的最大数目。 初始记录行的偏移量 ...
  • Mysql分页查询[2022-09-06]

    limit "(currentPage -1 ) * pageSize",pageSize;-->limit x,y;//x表示从数据库查询的临时表的第x行开始,pageSize表示获得几行,即每页的数据条数;x=(currentPage -1 ) * pageSize;y=pageSize; pageSize就是lineSize,就是分页后每页显示多少行记录。
  • sql语句如下: 分页1 SELECT * FROM (Select ROWNUM AS ROWNO, T.* from 表名 T(别名) where 表字段 between to_date('20060501', 'yyyymmdd') and to_date('20060731', 'yyyymmdd') AND ROWNUM WHERE TABLE_ALIAS.ROWNO >= 10; 经过测试,此方法成本最低,只嵌套一层,速度最快,即使查询的数据量再大,也几乎不受影响,速度依然. 分页2: SELE ...
  • sql语句如下: 分页1 1. SELECT * 2. FROM (Select ROWNUM AS ROWNO, T.* 3. from 表名 T(别名) 4. where 表字段 between to_date('20060501', 'yyyymmdd') and to_date('20060731', 'yyyymmdd') 5. AND ROWNUM <= 20) TABLE_ALIAS 6. WHERE TABLE_ALIAS.ROWNO >= 10; 7. 经过测试,此方法成本最低,只嵌套一层 ...
  • mysql分页查询[2022-08-01]

    select id,t from test where id>=(select id,t from test order by id limit 90000,1) limit 10;
  • select t2.* from (select rownum r,t1.* from youtable t1 where rownum? 小于最大的,大于最小的,就是你需要的条数 如果你取40-50条之间的 只需要小于50 大于40就OK了.
  • select id form biao1 where id>(select id from biao1 limi 10000,1) limit 20 order by id asc 这种思路是先缩小数据结果集,整体上是对的,但是做法不太对,用id>xxx的方式来缩小数据查询的范围,但是select id from biao1 limit 10000,1的本身是不快的。你把表的结构发出来吧,还有你现在用的查询语句,我看下你的索引怎么建的。