最初の百
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 0, 100
次の百
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100, 100
あなたは注文を入れることに非常に注意を払っています
説明されている制限ステートメント: LIMIT
ステートメントはWHERE
ではありません 句。 id
では選択されません 実際には、いかなる基準によっても(where
句はそれを行います)代わりにlimit
句は、単にblock
の一部が返されることを保証します 「すべて」のサブセットである結果の。したがって、order by
に言及することが重要である理由 毎回、後続の各呼び出しでデータブロックの正しい部分が順番に表示され、それらを介して「次へ」、「次へ」、「次へ」を実行できます。
例:無秩序なテーブルの場合this_table
:
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 12 | fish |
| 112 | pink |
| 2 | cat |
| 8 | dog |
| 56 | blue |
| 88 | grey |
| 87 | red |
+-------+-------------+
選択は以下のように戻ります:
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 0,5
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 2 | cat |
| 8 | dog |
| 12 | fish |
| 56 | blue |
+-------+-------------+
および
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 5,5
+-------+-------------+
| id | value |
+-------+-------------+
| 87 | red |
| 88 | grey |
| 112 | pink |
+-------+-------------+
行9と10がないことに注意してください。これは意図的なものであり、MySQLが意図したとおりに機能していることを示しています。
ちなみに、id
にインデックスを追加することも検討する必要があります これにより、これらの選択の速度が大幅に向上します
ALTER TABLE <table_name> ADD INDEX `id` (`id`)