Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PDO::fetchAll vs. PDO::fetch dalam satu lingkaran

Patokan kecil dengan 200 ribu catatan acak. Seperti yang diharapkan, metode fetchAll lebih cepat tetapi membutuhkan lebih banyak memori.

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

Kode benchmark yang digunakan :

<?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/>';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memigrasikan Database MySQL dari Amazon RDS ke DigitalOcean

  2. Menggunakan Fungsi Agregat (SUM, AVG, MAX, MIN, COUNT, DISTINCT) di MySQL

  3. Bagaimana Fungsi OCT() Bekerja di MySQL

  4. Kembalikan Hari, Bulan, dan Tahun di MySQL

  5. Cara Memotong Tabel di MySQL