MySQL: チャンク内の大規模な選択クエリの効率的な取得
MySQL で大規模なテーブルを扱う場合、分析またはエクスポートのためにデータを取得すると問題が発生する可能性がありますメモリの制約による課題。効果的な解決策の 1 つは、選択クエリをより小さく管理しやすいチャンクに分割することです。
チャンク内のデータのクエリ
MySQL には、返される行数を制限するための LIMIT 句が用意されています。クエリで。さまざまなオフセットを使用して LIMIT 句を繰り返し適用することにより、大規模な選択クエリを分割して取得できます。
<code class="sql">SELECT * FROM MyTable ORDER BY whatever LIMIT OFFSET, LIMIT;</code>
たとえば、次のクエリは最初の 1,000 行を返します:
<code class="sql">SELECT * FROM MyTable ORDER BY whatever LIMIT 0, 1000;</code>
次の 1,000 行を取得するには、オフセットを 1,000 増やします。
<code class="sql">SELECT * FROM MyTable ORDER BY whatever LIMIT 1000, 1000;</code>
結果セットの終わりを示す行が返されなくなるまで、このプロセスを続けます。
作成中安定性のための一時テーブル
チャンクの処理中に MyTable が変更されないようにするには、並べ替えられた結果を含む一時テーブルを作成します:
<code class="sql">CREATE TEMPORARY TABLE MyChunkedResult AS ( SELECT * FROM MyTable ORDER BY whatever );</code>
一時テーブルからチャンクをクエリします:
<code class="sql">SELECT * FROM MyChunkedResult LIMIT 0, 1000; SELECT * FROM MyChunkedResult LIMIT 1000, 1000;</code>
これにより、チャンク化プロセス全体を通じて順序とデータの整合性が確実に保たれます。
その他の考慮事項
このチャンク化アプローチを実装すると、MySQL から大規模な選択クエリを効率的に取得して処理でき、メモリ制限を最小限に抑え、データの安定性を確保できます。
以上がMySQL から大規模な選択クエリをチャンクで効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。