我有这个存储过程,它返回大约 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 秒可以,但对于下一页它不应该。如何在此 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 {
....
}
});