SELECT stuff FROM table LIMIT 0, 50
結果が得られなくなるまで、オフセットを 50 ずつ増やしながら、このクエリを繰り返します。
結果の順番は毎回同じですか?ORDER BY を使用したくないのは、順序付けする必要がないため、不必要にパフォーマンスが低下する可能性があるためです。
順序がどうであれ、クエリ間で同じままであることを確認したいだけなので、他のクエリで重複したレコードが取得されません。私が行ったテストから、そうではないようです...
ORDER BY を指定しないと、順序は保証されません。何をしたいかについては、明示的な ORDER BY を指定する必要があります。
コメントを反映するように編集
アンナ、この一連のクエリを実行すると正解です
SELECT stuff from table LIMIT 0, 50
SELECT stuff from table LIMIT 51, 50
SELECT stuff from table LIMIT 101, 50
... and so on ...
複数の結果セットで行を取得することはありません。これは幸運です。
クエリを繰り返すと
SELECT stuff from table LIMIT 51, 50
百万回、毎回同じ結果が得られる可能性は十分にありますが、保証はありません。
テーブルが主キーの場合は、次のようにします。
SELECT stuff
FROM table
ORDER BY pk
LIMIT 0, 50;
主キーによる順序付けは効率的です。
SQLite では、次のこともできます。
SELECT stuff
FROM table
ORDER BY rowid
LIMIT 0, 50;
rowid
行の物理的な位置に関連付けられたクエリで使用できる特別な「列」です。注文するrowid
ことも効率的である必要があります。