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

  • Mr. H

    Mr. H

    1 Temmuz 2012
  • stewmurray47

    stewmurray47

    1 Kasım 2006
  • taliajoy18

    taliajoy18

    12 Temmuz 2011