Rumah >pangkalan data >tutorial mysql >PDO::fetchAll() lwn. PDO::fetch() dalam Gelung: Manakah Lebih Cekap untuk Mendapatkan Pangkalan Data?
Perbandingan Prestasi: PDO::fetchAll vs. PDO::fetch in a Loop
Pilihan antara menggunakan PDO::fetchAll() dan PDO::fetch() dalam gelung boleh memberi kesan kepada prestasi dan penggunaan memori, terutamanya untuk hasil yang besar set.
Prestasi:
Tanda aras menunjukkan bahawa PDO::fetchAll() biasanya lebih pantas daripada PDO::fetch() dalam gelung, terutamanya untuk set hasil yang lebih besar. Ini mungkin disebabkan oleh fakta bahawa PDO::fetchAll() melaksanakan satu pertanyaan dan mengembalikan semua hasil sekaligus, manakala PDO::fetch() memerlukan berbilang pelaksanaan pertanyaan untuk mendapatkan semula baris individu.
Penggunaan Memori:
Walau bagaimanapun, PDO::fetchAll() juga memerlukan lebih banyak memori daripada PDO::fetch() dalam gelung. Ini kerana PDO::fetchAll() menyimpan keseluruhan set hasil dalam memori, manakala PDO::fetch() hanya menyimpan baris semasa pada bila-bila masa. Oleh itu, jika ketersediaan memori membimbangkan, menggunakan PDO::fetch() dalam gelung mungkin lebih sesuai.
Pengambilan Kelas Ditakrifkan Pengguna:
Kesan pengambilan ke dalam objek kelas yang ditentukan pengguna pada prestasi tidak penting. PDO::fetchAll() dan PDO::fetch() kedua-duanya menyokong pengambilan ke dalam objek mana-mana kelas yang melaksanakan kaedah PDOStatement::bindParam().
Cadangan:
Untuk set hasil yang besar, PDO::fetchAll() biasanya disyorkan atas sebab prestasi. Walau bagaimanapun, jika penggunaan memori adalah faktor pengehad, PDO::fetch() dalam gelung mungkin merupakan pilihan yang lebih baik.
Kod Contoh:
Kod berikut menunjukkan penggunaan kedua-dua PDO::fetchAll() dan PDO::fetch() dalam gelung:
$dbh = new PDO('mysql:dbname=testage;dbhost=localhost', 'root', ''); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = 'SELECT * FROM test_table WHERE 1'; // Fetch all results into an array $stmt = $dbh->query($sql); $results = $stmt->fetchAll(); // Iterate over results using fetch() $stmt = $dbh->query($sql); while ($row = $stmt->fetch()) { // Process each row }
Atas ialah kandungan terperinci PDO::fetchAll() lwn. PDO::fetch() dalam Gelung: Manakah Lebih Cekap untuk Mendapatkan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!