Rumah > pangkalan data > tutorial mysql > PDO::fetchAll() vs. PDO::fetch() dalam Gelung: Manakah Lebih Cekap untuk Set Data Besar?

PDO::fetchAll() vs. PDO::fetch() dalam Gelung: Manakah Lebih Cekap untuk Set Data Besar?

Barbara Streisand
Lepaskan: 2024-12-03 01:43:11
asal
337 orang telah melayarinya

PDO::fetchAll() vs. PDO::fetch() in a Loop: Which is More Efficient for Large Datasets?

PDO::fetchAll vs. PDO::fetch in a Loop for Large Result Sets

Untuk senario yang melibatkan pengambilan set hasil besar, soalan biasa timbul: kaedah manakah yang terbukti lebih cekap—PDO::fetchAll() atau PDO::fetch() dalam gelung?

Perdagangan Prestasi dan Memori

Andaian awal kami mencadangkan bahawa PDO::fetchAll() mungkin cemerlang dalam kelajuan kerana keupayaan PDO untuk melaksanakan berbilang operasi pangkalan data secara serentak, tidak seperti mysql_query( MySQL) ), yang mengendalikan satu operasi pada satu masa. Walau bagaimanapun, dokumentasi PDO kekal senyap mengenai aspek ini dan andaian tidak mencukupi.

Untuk menyelesaikan soalan ini, kami menjalankan penanda aras menggunakan set data sebanyak 200,000 rekod. Keputusan mengesahkan bahawa PDO::fetchAll() sememangnya menawarkan prestasi yang lebih pantas:

fetchAll : 0.35965991020203s, 100249408b
fetch : 0.39197015762329s, 440b
Salin selepas log masuk

Walau bagaimanapun, kenaikan prestasi ini datang pada harga yang berpatutan. PDO::fetchAll() memerlukan lebih banyak memori daripada PDO::fetch() dalam satu gelung.

Kod Penanda Aras

Untuk meniru penanda aras, anda boleh menggunakan kod berikut:

$dbh = new PDO('mysql:dbname=testage;dbhost=localhost', 'root', '');
$sql = 'SELECT * FROM test_table WHERE 1';
$stmt = $dbh->query($sql);

// FetchAll benchmark
$start_all = microtime(true);
$data = $stmt->fetchAll();
$end_all = microtime(true);

// Fetch loop benchmark
$data = array();
$start_one = microtime(true);
while($data = $stmt->fetch()){}
$end_one = microtime(true);
Salin selepas log masuk

Kesimpulan

Kesimpulannya, apabila bekerja dengan set hasil yang besar, PDO::fetchAll() memberikan kelebihan prestasi berbanding PDO::fetch() dalam gelung. Walau bagaimanapun, peningkatan ini diimbangi oleh peningkatan penggunaan memori PDO::fetchAll(). Oleh itu, pilihan ideal bergantung pada keperluan khusus aplikasi anda, mengimbangi kelajuan dan penggunaan memori.

Atas ialah kandungan terperinci PDO::fetchAll() vs. PDO::fetch() dalam Gelung: Manakah Lebih Cekap untuk Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan