sql >> Database >  >> RDS >> Mysql

Hoe selecteer ik paginering verstandig N aantal records uit MySQL Database?

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`)


  1. Is er een manier om store_result en get_result samen uit te voeren?

  2. Database hernoemen in SQL Server - SQL Server / TSQL-zelfstudie, deel 26

  3. Kan het libmysqlclient-dev-pakket niet installeren bij het bouwen van dockerfile met ubuntu

  4. Hoe gegroepeerde rijen met alleen NULL-waarden selecteren?