PHP 데이터베이스에서 대규모 결과 세트로 작업할 때 개발자는 다음 중 하나를 선택할 수 있습니다. 루프의 PDO::fetchAll() 및 PDO::fetch(). 이 결정은 주로 성능 및 메모리 고려 사항에 따라 결정됩니다.
PDO::fetchAll()
PDO::fetch ()
성능 비교
벤치마크에 따르면 루프에서 PDO::fetchAll()이 PDO::fetch()보다 빠릅니다. 특히 대규모 결과 세트의 경우. 그러나 이러한 성능 이점은 훨씬 더 많은 메모리를 소비하는 대가로 발생합니다.
메모리 고려 사항
PDO::fetchAll()의 메모리 요구 사항은 크기에 비례합니다. 결과 세트의. 대규모 데이터 세트의 경우 이로 인해 메모리 고갈이나 성능 문제가 발생할 수 있습니다. 반면에 PDO::fetch()는 행을 순차적으로 처리하므로 상당한 메모리가 필요하지 않습니다.
선택에 영향을 미치는 요소
중 적절한 선택 PDO::fetchAll() 및 PDO::fetch()는 다음에 따라 달라집니다.
예:
장점을 설명하기 위해 다음 벤치마크 코드를 고려하십시오.
$dbh = new PDO(...); $sql = 'SELECT * FROM test_table'; $stmt = $dbh->query($sql); $start_all = microtime(true); $data = $stmt->fetchAll(); $end_all = microtime(true); $start_one = microtime(true); while($data = $stmt->fetch()) {} $end_one = microtime(true); echo 'Result : ' . PHP_EOL; echo 'fetchAll : ' . ($end_all - $start_all) . 's, ' . memory_get_usage() . 'b' . PHP_EOL; echo 'fetch : ' . ($end_one - $start_one) . 's, ' . memory_get_usage() . 'b' . PHP_EOL;
fetchAll 메서드는 0.35초가 걸리고 100MB의 메모리가 필요한 반면, 가져오기 루프는 0.39초가 걸리고 440바이트의 메모리만 소비합니다. .
위 내용은 PHP에서 대규모 결과 세트로 작업할 때: PDO::fetchAll 또는 PDO::fetch를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!