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

MySQL :pobierz duży wybór porcjami

Możesz spróbować użyć LIMIT funkcja. Jeśli to zrobisz:

SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000

Otrzymasz pierwsze 1000 wierszy. Pierwszy LIMIT wartość (0) definiuje wiersz początkowy w zestawie wyników. Jest indeksowany do zera, więc 0 oznacza „pierwszy wiersz”. Drugie LIMIT wartość to maksymalna liczba wierszy do pobrania. Aby uzyskać kilka następnych zestawów po 1000, zrób tak:

SELECT * FROM MyTable ORDER BY whatever LIMIT 1000,1000 -- rows 1,001 - 2,000
SELECT * FROM MyTable ORDER BY whatever LIMIT 2000,1000 -- rows 2,001 - 3,000

I tak dalej. Gdy SELECT nie zwraca żadnych wierszy, gotowe.

To jednak samo w sobie nie wystarczy, ponieważ wszelkie zmiany wprowadzone w tabeli podczas przetwarzania wierszy o wielkości 1 tys. Aby zamrozić wyniki w czasie, zacznij od przesłania wyników do tabeli tymczasowej:

CREATE TEMPORARY TABLE MyChunkedResult AS (
  SELECT *
  FROM MyTable
  ORDER BY whatever
);

Uwaga dodatkowa:dobrze jest wcześniej upewnić się, że tabela tymczasowa nie istnieje:

DROP TEMPORARY TABLE IF EXISTS MyChunkedResult;

W każdym razie, gdy tabela tymczasowa jest już na miejscu, wyciągnij stamtąd fragmenty wiersza:

SELECT * FROM MyChunkedResult LIMIT 0, 1000;
SELECT * FROM MyChunkedResult LIMIT 1000,1000;
SELECT * FROM MyChunkedResult LIMIT 2000,1000;
.. and so on.

Pozostawię tobie stworzenie logiki, która obliczy wartość graniczną po każdym kawałku i sprawdzi koniec wyników. Polecam również znacznie większe fragmenty niż 1000 rekordów; to tylko numer, który wybrałem z powietrza.

Na koniec dobrze jest usunąć tabelę tymczasową po zakończeniu:

DROP TEMPORARY TABLE MyChunkedResult;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL wyjaśnia rozumienie zapytań

  2. Ostatnie x wpisów na blogu - ale tylko raz na użytkownika

  3. Błąd MySQL:lista SELECT nie znajduje się w klauzuli GROUP BY

  4. Jak wstawiać rekordy z tabeli do innej bez duplikatów

  5. jqGrid - Unikalny identyfikator dla nowego wiersza