windows2012server,での実績です。
結合テーブル数20個、union5個、sqlステップ数約300行
sql実行結果最大数1700件、平均1200件、カラム数33個、
データベースはcache です。
dbにjdbc 接続、sql実行し、オラクルに全レコードinsert
cache -> java に dtoリストへのresultset から詰め替え処理に
1秒以下、oracle insert 完了までの平均時間2.5秒。
oracle -> java -> web response をJson形式で出力する
までの実行時間は、2秒、サーブレット処理完了から、画面一覧表示
完了までの時間が初回、14秒、平均11秒、トータルで15-17秒くらい
です。
ie9,11での実績値です。
firefox22,33 では、画面表示に掛かる時間(javascriptのonload
実行から、画面が表示されて、スクロールバーが触れるようになるまで
の時間が平均6秒です。サーバー処理と合算すると平均9秒になります。
1000件のレコードをhtml table タグで表現したとき、ie9の表示不具合が
解消できなかったので、無限スクロール機能を持った一覧表示スクリプトで
一覧表示を実装しました。
1700件、30カラムのテーブル一覧表示で、ie9はハングアップに近い状態に
なりました。ie11でも同様です。1000件30-40カラムで15秒は妥当だと思います。
dbの結果 to list<OriginalEntity> の部分はリフレクションで、
dbの取得型は、double,int,string,で、oracle はdoubleじゃなくて
bigdecimalで取れるので、4つの型の相互変換と、リスト、マップの自動製成、
処理を自前で作成しました。余計なチェック処理、型変換処理が無い分、
beanutils のソレよりはほんの少しだけ早く動作しますが、1000件くらいでは
あまり変わりません。
カンバセーションセッションとかあるなら、jsonデータの遅延読み込みと、
無限スクロールする一覧script で、画面表示から画面を触れるようになるまでの時間を
3秒くらに短縮できます。
無限スクロール一覧
w2ui table
以前のプロジェクトでは、jpaりようの条件は、対象テーブルに1000件以上のデータがあるテーブルとjoinするか、だったと思います。jpaの仕組み上、3つの join は、3つのselect 分割されて、3テーブル共javaに読み込んでからjava側で結合するので、対象データが増えるほど、検索対象外のデータを無意味にキャッシュしてしまう特性が仇になったことを覚えています。
1000件15秒はそんなもんです。
sql -> java
java -> web response
web response -> browser
browser -> 一覧触れる
各ポイントの実行時間を測ってみた方がいいですよ。jpa絡むと遅いのはわかってるので、1000件の単純なクエリで結果取得から、画面表示まで。一番遅いのは、ブラウザです。
1000件ともなると、表示は解決できたとしても、一番肝心の操作性が劣化します。具体的には、スクロールがモッサリする。ie9互換モードなら、tablesorter プラグインは、firefox同等の性能だが、ie11を含め、標準モードでは動かない。ie9,11とも、30カラム以上のテーブル表示に納得できない不具合が発生する場合がある。
以上です、長々とすみません。