Maison  >  Article  >  base de données  >  Comment récupérer de grandes sélections MySQL en morceaux pour des performances améliorées ?

Comment récupérer de grandes sélections MySQL en morceaux pour des performances améliorées ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 06:11:31839parcourir

How to Retrieve Large MySQL Selects in Chunks for Enhanced Performance?

Récupération de sélections MySQL volumineuses en morceaux pour des performances améliorées

Lorsque vous traitez des ensembles de résultats massifs dépassant 70 millions de lignes dans MySQL, récupérez toutes les données à une fois peut conduire à un épuisement de la mémoire. Pour résoudre ce problème, l'optimisation du processus de récupération des données via le chunking devient cruciale.

La clause LIMIT fournit une solution pour récupérer des données par lots. En spécifiant la ligne de départ et le nombre maximum de lignes dans l'instruction LIMIT, vous pouvez récupérer les données en morceaux plus petits. Par exemple :

SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000

Cette requête récupère les 1 000 premières lignes, où 0 est la ligne de départ indexée zéro et 1 000 est le nombre maximum de lignes. Pour continuer à récupérer les morceaux suivants, vous pouvez incrémenter la ligne de départ en conséquence :

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

Cependant, pour éviter que la table sous-jacente ne change lors de la récupération des données, il est recommandé de stocker les résultats dans une table temporaire :

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

Après avoir créé la table temporaire, vous pouvez en récupérer des fragments de données :

SELECT * FROM MyChunkedResult LIMIT 0, 1000;
SELECT * FROM MyChunkedResult LIMIT 1000,1000;
SELECT * FROM MyChunkedResult LIMIT 2000,1000;

Le choix de la taille des fragments dépend du cas d'utilisation spécifique, et il est recommandé d'expérimenter avec des fragments plus grands pour optimisation des performances. De plus, n'oubliez pas de supprimer la table temporaire une fois le processus terminé :

DROP TEMPORARY TABLE MyChunkedResult;

En suivant ces étapes, vous pouvez récupérer efficacement les résultats de sélection MySQL volumineux en morceaux, améliorant ainsi l'utilisation de la mémoire et les performances globales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn