Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment sélectionner le nombre N d'enregistrements par pagination dans la base de données MySQL ?

première centaine

 SELECT * FROM <table_name> ORDER BY id ASC LIMIT 0, 100

prochaine centaine

 SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100, 100

vous êtes très observateur pour passer la commande par

LA DÉCLARATION DE LIMITE EXPLIQUÉE : La LIMIT l'instruction n'est PAS un WHERE clause. Il ne sélectionne pas par id ni en fait par aucun critère, (il where clause fait cela) Au lieu de cela, la limit clause garantit simplement que vous recevez un morceau du block des résultats qui sont sous-ensemble de "tout". D'où l'importance de mentionner un order by à chaque fois, de sorte que chaque appel suivant vous donnera le bon morceau du bloc de données dans l'ordre, et vous pouvez 'suivant', 'suivant', 'suivant' à travers eux

EG :pour la table désordonnée this_table :

+-------+-------------+
|  id   |   value     |
+-------+-------------+
|  1    |     bob     |
|  12   |     fish    |
|  112  |     pink    |
|  2    |     cat     |
|  8    |     dog     |
|  56   |     blue    |
|  88   |     grey    |
|  87   |     red     |
+-------+-------------+

les sélections reviennent comme ci-dessous :

SELECT * FROM <this_table> ORDER BY id ASC LIMIT 0,5
+-------+-------------+
|  id   |   value     |
+-------+-------------+
|  1    |     bob     |
|  2    |     cat     |
|  8    |     dog     |
|  12   |     fish    |
|  56   |     blue    |
+-------+-------------+

et

SELECT * FROM <this_table> ORDER BY id ASC LIMIT 5,5
+-------+-------------+
|  id   |   value     |
+-------+-------------+
|  87   |     red     |
|  88   |     grey    |
|  112  |     pink    |
+-------+-------------+

notez le manque de lignes 9 et 10 c'est délibéré et montre que MySQL fonctionne comme prévu

accessoirement, vous devriez également envisager d'ajouter un index sur id cela augmentera MASSIVEMENT la vitesse de ces sélections

ALTER TABLE <table_name> ADD INDEX `id` (`id`)