първите сто
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`)