eerste honderd
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 0, 100
volgende honderd
SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100, 100
je bent erg oplettend bij het plaatsen van de bestelling in
DE LIMIETVERKLARING UITGELEGD: De LIMIT
statement is GEEN WHERE
clausule. Het selecteert niet op id
noch in feite door enig criterium, (er where
clausule doet dat) In plaats daarvan de limit
clausule zorgt er eenvoudig voor dat u een stuk van het block
terugkrijgt van resultaten die deel uitmaken van "alles". Daarom is het belangrijk om een order by
. te vermelden elke keer, zodat elke volgende oproep u het juiste stuk van het datablok op volgorde geeft, en u kunt er 'volgende', 'volgende', 'volgende' doorheen gaan
EG:voor de ongeordende tabel this_table
:
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 12 | fish |
| 112 | pink |
| 2 | cat |
| 8 | dog |
| 56 | blue |
| 88 | grey |
| 87 | red |
+-------+-------------+
de selecties keren terug zoals hieronder:
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 0,5
+-------+-------------+
| id | value |
+-------+-------------+
| 1 | bob |
| 2 | cat |
| 8 | dog |
| 12 | fish |
| 56 | blue |
+-------+-------------+
en
SELECT * FROM <this_table> ORDER BY id ASC LIMIT 5,5
+-------+-------------+
| id | value |
+-------+-------------+
| 87 | red |
| 88 | grey |
| 112 | pink |
+-------+-------------+
let op het ontbreken van rijen 9 en 10 dit is opzettelijk en laat zien dat MySQL werkt zoals bedoeld
overigens moet je ook kijken naar het toevoegen van een index op id
dit zal de snelheid van deze selecties ENORM verhogen
ALTER TABLE <table_name> ADD INDEX `id` (`id`)