PDO::fetchAll() lwn. PDO::fetch() dalam Gelung untuk Set Hasil Besar
Pengenalan
Apabila berurusan dengan set hasil yang besar dalam PHP menggunakan PDO, pembangun sering menghadapi soalan: Sekiranya mereka menggunakan PDO::fetchAll() atau PDO::fetch() dalam gelung? Artikel ini meneroka perbezaan prestasi antara dua pendekatan ini.
Perbandingan Prestasi
Sebagai peraturan umum, PDO::fetchAll() cenderung lebih pantas daripada menggunakan PDO: :fetch() dalam gelung untuk set hasil yang besar. Ini kerana PDO::fetchAll() mengambil semua baris hasil yang ditetapkan dalam satu operasi, manakala PDO::fetch() melakukan berbilang pertanyaan pangkalan data, satu untuk setiap baris.
Penggunaan Memori
Walau bagaimanapun, adalah penting untuk mengambil kira bahawa pengambilan keseluruhan hasil set ke dalam tatasusunan (seperti yang dilakukan oleh fetchAll()) memerlukan lebih banyak memori. Ini boleh menjadi faktor penting untuk set hasil yang sangat besar. Dalam kes sedemikian, menggunakan PDO::fetch() dalam gelung mungkin lebih sesuai jika penggunaan memori menjadi kebimbangan.
Hasil Penanda Aras
Untuk menyediakan yang lebih konkrit perbandingan, penanda aras berikut telah dilakukan:
fetchAll : 0.35965991020203s, 100249408b fetch : 0.39197015762329s, 440b
Seperti yang diperhatikan, fetchAll() adalah lebih pantas sedikit tetapi menggunakan lebih banyak memori dengan ketara.
Kesimpulan
Sama ada hendak menggunakan PDO::fetchAll() atau PDO::fetch() dalam gelung bergantung pada saiz set hasil dan sumber memori yang tersedia. Untuk set hasil yang besar, fetchAll() biasanya lebih pantas tetapi memerlukan lebih banyak memori. Untuk set hasil yang lebih kecil atau yang membimbangkan penggunaan memori, PDO::fetch() dalam gelung mungkin merupakan pilihan yang lebih baik.
Atas ialah kandungan terperinci PDO::fetchAll() lwn. PDO::fetch() in a Loop: Manakah yang Lebih Baik untuk Set Hasil Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!