Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

PDO ::fetchAll so với PDO ::tìm nạp trong một vòng lặp

Điểm chuẩn ít với 200k hồ sơ ngẫu nhiên. Như mong đợi, phương thức fetchAll nhanh hơn nhưng yêu cầu nhiều bộ nhớ hơn.

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

Mã điểm chuẩn được sử dụng:

<?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. Cách giám sát ProxySQL của bạn với Prometheus và ClusterControl

  2. Tính toán decile từ tần suất trong MySQL

  3. Có gì mới trong ProxySQL 2.0

  4. Truy vấn để lấy tất cả các hàng từ tháng trước

  5. mysql sau khi chèn trình kích hoạt sẽ cập nhật cột của bảng khác