«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно извлекать большие наборы данных из MySQL частями?

Как эффективно извлекать большие наборы данных из MySQL частями?

Опубликовано 8 ноября 2024 г.
Просматривать:556

How to Efficiently Retrieve Large Datasets from MySQL in Chunks?

Извлечение больших данных из MySQL частями для повышения производительности

При работе с большими выборками MySQL с миллионами строк во время извлечения данных могут возникнуть проблемы с ограничениями памяти. В этой статье рассматривается решение этой проблемы с помощью функции LIMIT для извлечения данных управляемыми фрагментами.

Для итеративного извлечения больших наборов данных можно использовать функцию LIMIT. Указав начальную строку и максимальное количество строк для извлечения, мы можем разбить процесс выбора на более мелкие подмножества. Например, выполнение следующего запроса:

SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000

позволит получить первые 1000 строк. Чтобы получить последующие наборы из 1000 строк, мы можем выполнить аналогичные запросы с скорректированными значениями LIMIT, например:

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

Однако этот подход не гарантирует согласованный порядок строк из-за возможных изменений в таблице во время процесса поиска. Чтобы решить эту проблему, мы можем сначала создать временную таблицу и заполнить ее упорядоченными результатами:

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

Это гарантирует, что порядок строк останется неизменным, пока мы извлекаем их частями:

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;

Принятие этого подхода к извлечению фрагментов значительно повышает производительность и позволяет успешно извлекать большие MySQL-файлы. наборы данных.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3