リストから絞り込んで取得すると共にトータル件数を取得
例えば
table +--------------+ | id | name | +-----+--------+ | 1 | name1 | +-----+--------+ | 2 | name2 | +--------------+
こんなテーブルがあったとして、普通なら
1. リストを取得
SELECT id, name FROM table /* Oracle */ WHELE ROWNUM BETWEEN :START AND :END /* MySql */ LIMIT :COUNT OFFSET :OFFSET
2. トータル件数取得
SELECT COUNT(id) AS total FROM table
なんて感じですごく効率の悪いことをしていた。
けど、ちょっと調べてみたらもっと便利にリストとトータル件数を取得できるらしい。
Oracle の場合
OVER() を使う
SELECT id, name, COUNT(id) OVER() AS total FROM table WHERE ROWNUM BETWEEN :START AND :END