パラメータに応じて、約 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
このストアド プロシージャは、jdbcTemplate を介して Java メソッドによって呼び出され、そこからページングを行います。sp_doStuff
ただし、平均実行時間がすでに 60 秒であることを考えると、これは非常に遅いです。
つまりsp_doStuff
、ユーザーが次のページ ボタンをクリックするたびに呼び出されます (非常に遅い)。1 回は 60 秒で問題ありませんが、次のページでは問題ありません。この SQL コード内にビュー (または任意のソリューション アプリケーション) を実装して、jdbcTemplate
呼び出しで毎回この 10 万行を処理する必要がないようにするにはどうすればよいでしょうか。
次のボタンがクリックされるたびに呼び出されます:
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 {
....
}
});