"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso recuperar grandes consultas SELECT do MySQL em partes para otimizar o desempenho e evitar erros de memória?

Como posso recuperar grandes consultas SELECT do MySQL em partes para otimizar o desempenho e evitar erros de memória?

Publicado em 2025-01-25
Navegar:112

How can I retrieve large MySQL SELECT queries in chunks to optimize performance and avoid memory errors?

recuperando o MySQL grande seleciona em chunks

Quando confrontado com grandes consultas MySQL que excedem milhões de linhas, torna -se crucial para otimizar o desempenho para evitar erros de memória. Uma abordagem eficaz é recuperar dados em pedaços, em vez de tentar recuperar todo o conjunto de dados de uma só vez.

para conseguir isso, você pode utilizar o recurso Limit. Ao especificar a linha inicial (deslocamento) e o número de linhas para recuperar (limite), você pode recuperar dados em segmentos gerenciáveis. Por exemplo, a consulta a seguir retorna as primeiras 1.000 linhas:

SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000

para recuperar pedaços subsequentes de 1.000 linhas, ajustar o deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e deslocamento e Limite de acordo:

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, para garantir a consistência dos seus dados, é recomendável criar uma tabela temporária e preencher -a com os resultados da consulta original. Isso congela os dados no tempo e evita alterações durante o processamento. A tabela temporária pode ser consultada em pedaços:

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

-- retrieve row chunks
SELECT * FROM MyChunkedResult LIMIT 0, 1000;
SELECT * FROM MyChunkedResult LIMIT 1000,1000;
SELECT * FROM MyChunkedResult LIMIT 2000,1000;

finalmente, lembre -se de deixar abandonar a tabela temporária quando terminar para evitar o uso desnecessário de armazenamento:

DROP TEMPORARY TABLE MyChunkedResult;
Tutorial mais recente Mais>

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