2 つの列に基づいてデータベースの結果を返す場合、どのようにページ付けしますか?
limit と offset を使用するのは簡単ですが、大規模なデータセットでは非常に遅くなります。
http://www.sqlite.org/のように、1 つの列の検索用語が一定のままである場合、他の列の最後のレコードを覚えておいて、それを過ぎて次のページに表示する方法をたくさん見てきました。 cvstrac/wiki?p=ScrollingCursor .
しかし、異なる 2 つの列を使用して検索している場合はどうなるでしょうか。
例: First Name と Last name でブラウジングし、名の次に姓の順に並べます。
SELECT * FROM table1 ORDER BY firstname COLLATE NOCASE ASC, lastname COLLATE NOCASE ASC LIMIT 100
100 行を表示し、最後の行はアンジェラ スミスかもしれないので、これを 2 つの変数で覚えてから、次のページを表示します...
SELECT * FROM table1 WHERE firstname>="Angela" COLLATE NOCASE AND lastname>"Smith" COLLATE NOCASE ORDER BY firstname COLLATE NOCASE ASC, lastname COLLATE NOCASE ASC LIMIT 100
ファーストネームがアンジェラの場合、残りの名前を表示する場合は正しく機能しますが、たとえば、アンジェラがアリアになった後、ラストネームが「スミス」のアリアのみが表示されます。
これを照会する適切な方法は何ですか?
ご覧いただきありがとうございます