現在の位置: ホーム> 最新記事一覧> pdostatement :: fetchcolumnとpdostatement :: fetchallのパフォーマンスの違いはどれくらい大きいですか?

pdostatement :: fetchcolumnとpdostatement :: fetchallのパフォーマンスの違いはどれくらい大きいですか?

gitbox 2025-09-18
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 以下は記事の内容とは何の関係もありません PHP コードの例</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">randomGreeting</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-variable">$greetings</span></span><span> = [</span><span><span class="hljs-string">"Hello!"</span></span><span>, </span><span><span class="hljs-string">"Hi!"</span></span><span>, </span><span><span class="hljs-string">"Hey there!"</span></span><span>, </span><span><span class="hljs-string">"Greetings!"</span></span><span>];
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$greetings</span></span><span>[</span><span><span class="hljs-title function_ invoke__">array_rand</span></span><span>(</span><span><span class="hljs-variable">$greetings</span></span><span>)];
}

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">randomGreeting</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>

<hr>

</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// テキストの内容を開始します</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>

<h1></span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">fetchColumn</span></span><span> そして </span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">fetchAll</span></span><span> パフォーマンスの違いの大きさ?</h1>

<p>存在する PHP で使用されます PDO データベース操作を実行するとき,しばしば遭遇します <code></span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">fetchColumn</span></span><span>

上記の例では、ループごとに1列のIDのみが取得され、メモリ消費量は非常に低いです。

フェッチの例:

 
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-string">"SELECT id, name FROM users"</span></span><span>);
</span><span><span class="hljs-variable">$rows</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetchAll</span></span><span>(PDO::</span><span><span class="hljs-variable constant_">FETCH_ASSOC</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$rows</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] . </span><span><span class="hljs-string">' - '</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}

Fetchallは結果全体を一度にメモリにロードし、テーブルが非常に大きい場合、パフォーマンスに影響を与える可能性があります。

4。概要

要約すれば:

  • 単一の列または少量のデータのみが必要な場合、 FetchColumn()が最初の選択肢であり、これはより多くのメモリを節約し、パフォーマンスが向上します。
  • 結果全体を一度に処理する必要があり、データボリュームが制御可能である場合、 fetchall()の方が便利ですが、メモリ要件が高くなります。
  • 大規模なデータボリュームのシナリオでは、Fetchallを避け、FetchまたはFetchColumnを使用してバッチで処理するようにしてください。
<?php //記事の最後にコンテンツに関連しないPHPコードの例 関数 printtimestamp ){ echo 「現在のタイムスタンプ:」 時間(); } printtimestamp (); ?>