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!