Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como selecionar o número de paginação sábio N de registros do banco de dados MySQL?


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

próxima centena
 SELECT * FROM <table_name> ORDER BY id ASC LIMIT 100, 100

você é muito observador em colocar o pedido em

A DECLARAÇÃO DE LIMITE EXPLICADA: O LIMIT declaração NÃO é um WHERE cláusula. Não seleciona por id nem de fato por qualquer critério, (há where cláusula faz isso) Em vez disso, o limit cláusula simplesmente garante que você receba uma parte do block de resultados que são subconjunto de "tudo". Por isso é importante mencionar um order by cada vez, para que cada chamada subsequente forneça a parte correta do bloco de dados em ordem, e você pode 'próximo', 'próximo', 'próximo' através deles

EG:para a tabela desordenada this_table :
+-------+-------------+
|  id   |   value     |
+-------+-------------+
|  1    |     bob     |
|  12   |     fish    |
|  112  |     pink    |
|  2    |     cat     |
|  8    |     dog     |
|  56   |     blue    |
|  88   |     grey    |
|  87   |     red     |
+-------+-------------+

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

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

observe a falta das linhas 9 e 10, isso é deliberado e mostra o MySQL funcionando conforme o esperado

aliás, você também deve adicionar um índice em id isso aumentará MASSIVAMENTE a velocidade dessas seleções
ALTER TABLE <table_name> ADD INDEX `id` (`id`)