gpt4 book ai didi

java - 存储过程中的分页策略(查看或?)

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

我有这个存储过程,它返回大约 100K 到 1M 行,具体取决于参数:

CREATE PROCEDURE dbo.sp_doStuff
@userId bigint = 0,
@date datetime = null
AS
BEGIN
SET NOCOUNT ON;

SELECT
...
from
...
order by theDate DESC;

END

此存储过程由 Java 方法通过 jdbcTemplate 调用,并从那里进行分页。然而,考虑到 sp_doStuff 平均执行时间已经是 60 秒,这非常慢。

这就是 sp_doStuff 为用户单击的每个下一页按钮调用(非常慢)。一次 60 秒没问题,但下一页就不行了。我如何实现 View (或任何解决方案应用程序)在此 SQL 代码中,jdbcTemplate 调用将不必每次都处理这十万行。

每次单击下一个按钮时调用:

String sql = "MyDB..sp_doStuff '12345', '2013-01-24'"
return jdbcTemplate.query(sql, new ResultSetExtractor<MyModel<Map<String, String>>>() {
@Override
public MyModel<Map<String, String>> extractData(ResultSet rs)
throws SQLException, DataAccessException {
....
}
});

最佳答案

抱歉,您真的应该在页面上向用户显示所有 10 万行???这看起来很疯狂,真实的人永远不会在现实生活中分析 10 万行信息。如果您有 1M 行并计算它们的值或其他值的 AVG 就没问题,但是从 SP 向人显示是非常糟糕的做法。从我的角度来看,您应该使用限制行和索引结果集的方法。例如:SELECT salary, date FROM USER_SALARY t WHERE t.id = '1748' ORDER BY date DESC LIMIT 29799, 100;此请求将显示 USER_SALARY 表中 ID 为 1748 的用户的 100 行(起始行位置 - 29800),该用户按日期字段排序(当然索引已按 ID 字段创建)我想,上述方法允许您处理应该在页面上向用户显示的大数据表。

关于java - 存储过程中的分页策略(查看或?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14497202/

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