Ao lidar com seleções consideráveis do MySQL com milhões de linhas, podem surgir problemas com restrições de memória durante a recuperação de dados. Este artigo explora uma solução para esse desafio utilizando o recurso LIMIT para recuperar dados em partes gerenciáveis.
Para recuperar grandes conjuntos de dados iterativamente, o recurso LIMIT pode ser empregado. Ao especificar uma linha inicial e um número máximo de linhas a serem recuperadas, podemos dividir o processo de seleção em subconjuntos menores. Por exemplo, executar a seguinte consulta:
SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000
buscará as primeiras 1.000 linhas. Para recuperar conjuntos subsequentes de 1.000 linhas, podemos emitir consultas semelhantes com valores LIMIT ajustados, como:
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
No entanto, essa abordagem não garante uma ordem consistente de linhas devido a possíveis alterações na tabela durante o processo de recuperação. Para resolver isso, podemos primeiro criar uma tabela temporária e preenchê-la com os resultados ordenados:
CREATE TEMPORARY TABLE MyChunkedResult AS ( SELECT * FROM MyTable ORDER BY whatever );
Isso garante que a ordem das linhas permaneça intacta enquanto as recuperamos em partes:
SELECT * FROM MyChunkedResult LIMIT 0, 1000; SELECT * FROM MyChunkedResult LIMIT 1000,1000; SELECT * FROM MyChunkedResult LIMIT 2000,1000; .. and so on.
Para determinar a linha inicial apropriada para cada bloco e verificar o final dos resultados, uma lógica personalizada pode ser implementada. É recomendado usar tamanhos de bloco significativamente maiores do que 1.000 registros para otimizar o desempenho.
Ao concluir a recuperação de dados, é aconselhável descartar a tabela temporária para gerenciamento de recursos:
DROP TEMPORARY TABLE MyChunkedResult;
A adoção dessa abordagem de recuperação fragmentada melhora significativamente o desempenho e permite a extração bem-sucedida de grandes conjuntos de dados MySQL.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3