Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wybrać paginację pod kątem liczby N rekordów z bazy danych MySQL?

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL do wyodrębnienia pierwszego słowa z pola

  2. System prywatnych wiadomości. Wyświetlanie ostatniej wiadomości z każdej rozmowy

  3. Jak używać zmiennej zdefiniowanej przez użytkownika MySql w .NET MySqlCommand?

  4. Błąd połączenia PHP z bazą danych

  5. MySQL FULLTEXT nie działa z więcej niż jednym polem