SORU
5 Mayıs 2010, ÇARŞAMBA


::FetchAll vs PDO PDO::bir döngü getirme

Sadece hızlı bir soru.

Orada herhangi bir performans PDO kullanarak arasındaki fark nedir::fetchAll() ve PDO::fetch() döngü (büyük sonuç kümeleri için)?

Eğer herhangi bir fark kullanıcı tanımlı bir sınıf, bir obje haline getiriliyor ediyorum.

İlk eğitimsiz varsayımım fetchAll PDO mysql_query tek yürütme tek bir deyim içinde birden fazla işlem yapabilir, çünkü daha hızlı olabilir. PDO iç işleyişini çok az bilgiye sahibim ancak ve belgeleri, bu konuda bir şey söylemiyor, ya da fetchAll olsun olmasın) sadece PHP-yan döngü bir dizi içine dökülüyor.

Herhangi bir yardım?

CEVAP
5 Mayıs 2010, ÇARŞAMBA


200 k rasgele kayıtları ile küçük bir kıyaslama. Beklendiği gibi, fetchAll yöntemi daha hızlıdır ama daha fazla bellek gerektirir.

Result :
fetchAll : 0.35965991020203s, 100249408b
fetch : 0.39197015762329s, 440b

Referans kodu :

<?php
// First benchmark : speed
$dbh = new PDO('mysql:dbname=testage;dbhost=localhost', 'root', '');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'SELECT * FROM test_table WHERE 1';
$stmt = $dbh->query($sql);
$data = array();
$start_all = microtime(true);
$data = $stmt->fetchAll();
$end_all = microtime(true);

$stmt = $dbh->query($sql);
$data = array();
$start_one = microtime(true);
while($data = $stmt->fetch()){}
$end_one = microtime(true);

// Second benchmark : memory usage
$stmt = $dbh->query($sql);
$data = array();
$memory_start_all = memory_get_usage();
$data = $stmt->fetchAll();
$memory_end_all = memory_get_usage();

$stmt = $dbh->query($sql);
$data = array();
$memory_end_one = 0;
$memory_start_one = memory_get_usage();
while($data = $stmt->fetch()){
  $memory_end_one = max($memory_end_one, memory_get_usage());
}

echo 'Result : <br/>
fetchAll : ' . ($end_all - $start_all) . 's, ' . ($memory_end_all - $memory_start_all) . 'b<br/>
fetch : ' . ($end_one - $start_one) . 's, ' . ($memory_end_one - $memory_start_one) . 'b<br/>';

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • boogie2988

    boogie2988

    6 NİSAN 2006
  • kindlechatmail

    kindlechatma

    25 AĞUSTOS 2010
  • Mr. H

    Mr. H

    1 Temmuz 2012