현재 위치: > 최신 기사 목록> 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>

위의 예에서는 루프 당 하나의 행의 ID 만 얻고 메모리 소비는 매우 낮습니다.

Fetchall 예 :

 
</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 ( ) { 에코 "현재 타임 스탬프 :" . 시간 (); } printTimeStamp (); ?>