gpt4 book ai didi

java - 数据分页问题: java + oracle sql

转载 作者:行者123 更新时间:2023-11-30 06:53:33 27 4
gpt4 key购买 nike

我需要对从数据库检索的数据(项目)进行分页。UI 还包含搜索选项和数据量,顺序也取决于搜索条件。

假设客户端发送带有某些搜索条件的请求并获得 60 个结果。客户端会看到从 1 到 maxPageSize(默认为 25)的项目。如果请求第二页 - 将显示 26-50 项。问题是当前我无法获得最大结果数,并且无法显示 maxPage 数。

我看到这个问题有两种解决方案:

  1. 使用相同的参数第二次查询数据库,但没有分页并获取项目数。
  2. 从数据库中检索所有项目,通过搜索条件在后端代码中过滤它们并将其发送给客户端。

问题是:

1) 哪种操作一般来说成本较低?

2)如果有更好的解决方案,还可以做什么来解决此类任务?

附注用 Java 编写的后端代码,通过 JDBC 向 Oracle 11g DB 发送查询。

---编辑---

我是这样解决这个问题的:

WITH FINAL_RESULT AS 
(SELECT SORTED_ITEMS.*,
ROWNUM RN
FROM (sorted basic query with searches))

SELECT FINAL_RESULT.*,
(SELECT COUNT(*) FROM FINAL_RESULT) ITEMS_COUNT
FROM FINAL_RESULT
WHERE RN BETWEEN ? AND ?

最佳答案

如果数据库中有大量数据,第二种解决方案将非常昂贵。

但是,第一个解决方案非常适合一些周。您不需要使用相同的参数第二次查询数据库,而是服务器应该在每个请求中发送 TOTAL_COUNT 并且该值应该被缓存。

如果计数没有改变,则由于缓存,数据库不会有任何负载。

关于java - 数据分页问题: java + oracle sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42252279/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com