Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL:извличане на голям избор по парчета

Можете да опитате да използвате LIMIT отличителен белег. Ако направите това:

SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000

Ще получите първите 1000 реда. Първият LIMIT стойност (0) дефинира началния ред в набора от резултати. Той е с нулев индекс, така че 0 означава "първият ред". Вторият LIMIT стойност е максималният брой редове за извличане. За да получите следващите няколко комплекта от 1000, направете това:

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

И така нататък. Когато SELECT не връща редове, готово е.

Това обаче не е достатъчно само по себе си, тъй като всякакви промени, направени в таблицата, докато обработвате вашите 1K реда наведнъж, ще изхвърлят поръчката. За да замразите резултатите във времето, започнете със заявка за резултатите във временна таблица:

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

Странична бележка:добра идея е предварително да се уверите, че временната таблица не съществува:

DROP TEMPORARY TABLE IF EXISTS MyChunkedResult;

Във всеки случай, след като временната таблица е на мястото си, издърпайте парчетата ред от там:

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

Ще оставя на вас да създадете логиката, която ще изчислява граничната стойност след всяка част и ще проверява за края на резултатите. Също така бих препоръчал много по-големи парчета от 1000 записа; това е просто число, което избрах от въздуха.

И накрая, добра форма е да махнете временната таблица, когато сте готови:

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 от Android с JDBC

  2. WHERE дата и време по-старо от известно време (напр. 15 минути)

  3. Предупреждение:mysqli_connect():Неизвестен хост на MySQL сървър

  4. Кой е най-добрият начин за криптиране/декриптиране на json низ

  5. MySQL CREATE USER с променлива?