ループ内の PDO::fetchAll() と PDO::fetch(): パフォーマンスの比較
大規模な結果セットを処理する場合PDO を使用する PHP では、よくある質問が生じます。PDO::fetchAll() を使用する場合と PDO::fetchAll() を使用する場合とでパフォーマンスに違いはありますか? PDO::fetch() がループ内にある?
パフォーマンス ベンチマーク
この質問に答えるために、200,000 のランダム レコードを含むテーブルを使用してベンチマークを実施しました。結果は、速度の点で PDO::fetchAll() が PDO::fetch() よりも優れていることを示しました:
メモリ使用量
ただし、PDO::fetchAll() は PDO::fetch() よりも多くのメモリを必要とすることに注意することが重要です。同じベンチマーク:
主な違い
これら 2 つの方法の主な違いは、その方法にあります。データベースからデータを取得します。 PDO::fetchAll() はすべての行を一度にフェッチして配列に格納しますが、PDO::fetch() はループを使用してデータを行ごとにフェッチします。
大きな結果セットの影響
大きな結果セットの場合、PDO::fetchAll() の方が有利です。これは、必要なデータベースのラウンドトリップが少なくなり、データの取得にかかる全体の時間。ただし、PDO::fetchAll() に関連するメモリ オーバーヘッドを考慮することが重要です。
オブジェクトのフェッチ
ユーザーのオブジェクトにデータをフェッチしている場合、定義されたクラスでは、オブジェクトのインスタンス化のオーバーヘッドが大きいため、PDO::fetchAll() と PDO::fetch() のパフォーマンスの違いはそれほど重要ではないと予想されます。
結論
ループ内で PDO::fetchAll() と PDO::fetch() のどちらを選択するかは、ループのサイズによって異なります。結果セットと使用可能なメモリ。速度が優先される大規模な結果セットの場合は、PDO::fetchAll() が推奨されるアプローチですが、メモリ制約が問題となる場合は注意して使用する必要があります。
以上がループ内の PDO::fetchAll() と PDO::fetch(): 大きな結果セットではどちらのパフォーマンスが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。