【发布时间】:2019-03-11 08:33:46
【问题描述】:
我的数据库有数百万条记录,正在门户上用于向用户显示,分页是使用偏移量完成的,数据也按某些列排序,是否有任何替代解决方案来偏移和使用任何索引列例如自动递增字段或唯一字段,如果我必须使用一些不同的列进行排序,它就不起作用,即使删除该行也不会返回预期结果。
我在我的 java 应用程序中运行 sql 查询,我尝试了一种方法,只对我的查询添加限制。所以它的工作原理就像偏移量总是为零,并且根据分页逻辑限制将是(限制+偏移量)的数量
例如:用户请求每页 10 条记录并导航到 51 页
替代逻辑:limit 10 offset 500 -> limit = 510
查询看起来像
select * from history limit 510 order by log_date;
所以在ResultSet 的absolute 方法的帮助下,我根据指定的偏移量导航到行号并获取该行之后的结果
-- No of rows returned 510
rs.absolute(500);
while(rs.next()){
//store data in the object
}
但即使通过这种方式,我也会告诉数据库返回 510 条记录,如果用户导航到最后一页,它将获取所有行,这将非常低效。
【问题讨论】: