パフォーマンスを向上させるために大規模な MySQL 選択をチャンクで取得する
MySQL で 7,000 万行を超える大規模な結果セットを処理する場合、すべてのデータをフェッチします。一度行うとメモリが枯渇する可能性があります。これに対処するには、チャンク化によるデータ取得プロセスの最適化が重要になります。
LIMIT 句は、データをバッチで取得するためのソリューションを提供します。 LIMIT ステートメントで開始行と最大行数を指定すると、より小さなチャンクでデータをフェッチできます。例:
SELECT * FROM MyTable ORDER BY whatever LIMIT 0,1000
このクエリは最初の 1,000 行を取得します。ここで、0 はゼロインデックスの開始行、1000 は最大行数です。後続のチャンクのフェッチを続行するには、それに応じて開始行をインクリメントできます:
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;
チャンク サイズの選択は特定のユースケースによって異なり、より大きなチャンクで実験することをお勧めします。パフォーマンスの最適化。さらに、プロセスが完了したら、忘れずに一時テーブルを削除してください:
DROP TEMPORARY TABLE MyChunkedResult;
これらの手順に従うことで、大規模な MySQL 選択結果をチャンク単位で効果的に取得でき、メモリ使用量と全体的なパフォーマンスが向上します。
以上がパフォーマンスを向上させるために大規模な MySQL 選択をチャンクで取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。