私は次の「ワッパー」を使用して、いくつかの場面でページ付けを実装しました。これは、「標準のページング選択」と呼ばれることがよくあります。したがって、selectステートメントの結果をページ分割するには、selectステートメントを「標準のページング選択」でラップするだけです。
SELECT * FROM (SELECT a.*, ROWNUM rnum FROM ((
( subquery: put your select * from ....... here ..)
)) a WHERE ROWNUM <= ${resultEnd} )
WHERE rnum >= ${resultStart}
私の質問は、ページングビットの動作とROWNUM周辺の魔法に関するものです。私の理解では、サブクエリは毎回完全な結果セットを選択するわけではなく、確認などを探していましたか?
次のとおりです。たとえば、ページサイズが50の場合、上記のページング動作の正しい説明は次のとおりです。
選ぶ:
- ページ1(例:0-50)サブクエリは0-50行を選択します
- ページ2(例:51-100)サブクエリは0-100行を選択します(外部クエリは50-100に制限します)
- ページ3(例:101-150)サブクエリは0-150行を選択します(外部クエリは101-150に制限します)
- ページ4(例:151-200)サブクエリは0-200行を選択します(外部クエリは151-200に制限します)
- 5ページ(例:201-250)サブクエリは0-250行を選択します(外部クエリは201-250に制限します)
...など、パターンを見ることができます。
「ページ」に進むほど、サブクエリで実行する必要のある作業が増えます。これは正しいです?もしそうなら、ROWNUMはこれをどのように行いますか?
前もって感謝します。そしてフィードバックをいただければ幸いです