pierwsza setka
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 0, 100
następne sto
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100, 100
jesteś bardzo spostrzegawczy, jeśli chodzi o składanie zamówienia w
OBJAŚNIENIE OŚWIADCZENIA O LIMITU: LIMIT
instrukcja NIE jest WHERE
klauzula. Nie wybiera według id
ani w rzeczywistości według jakichkolwiek kryteriów (tutaj where
robi to klauzula) Zamiast tego limit
klauzula po prostu zapewnia, że otrzymasz fragment block
wyników, które są podzbiorem „wszystkiego”. Dlatego ważne jest, aby wspomnieć o order by
za każdym razem, tak aby każde kolejne wywołanie podało właściwy fragment bloku danych w odpowiedniej kolejności i można było przez nie przejść „następny”, „następny”, „następny”
Np. dla nieuporządkowanej tabeli this_table
:
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 12 | fish |
| 112 | pink |
| 2 | cat |
| 8 | dog |
| 56 | blue |
| 88 | grey |
| 87 | red |
+-------+-------------+
zaznaczenia powracają jak poniżej:
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 0,5
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 2 | cat |
| 8 | dog |
| 12 | fish |
| 56 | blue |
+-------+-------------+
i
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 5,5
+-------+-------------+
| id | value |
+-------+-------------+
| 87 | red |
| 88 | grey |
| 112 | pink |
+-------+-------------+
zauważ brak wierszy 9 i 10 jest to celowe i pokazuje, że MySQL działa zgodnie z przeznaczeniem
nawiasem mówiąc, powinieneś również spojrzeć na dodanie indeksu do id
to MASYWNIE zwiększy szybkość tych wyborów
ALTER TABLE <table_name> ADD INDEX `id` (`id`)