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

  • Hak5DarrensVlog

    Hak5DarrensV

    11 EYLÜL 2009
  • michellefeng's channel

    michellefeng

    26 Kasım 2006
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008