Rumah > Artikel > pangkalan data > Adakah Menggunakan fetchall() dengan MySQLDB SSCursor Sebenarnya Cekap untuk Set Data Besar?
Penggunaan MySQLDB SSCursor yang Cekap untuk Set Hasil Besar
Apabila mengendalikan set hasil yang luas yang melibatkan ratusan ribu atau lebih baris, pengurusan memori yang cekap menjadi penting. Oleh yang demikian, MySQLDB SScursor (Streaming Select Cursor) muncul sebagai alat yang sesuai untuk meminimumkan penggunaan memori.
Perbezaan Antara Fetchall() dengan Base Cursor vs. SSCursor
Bertentangan dengan kepercayaan popular, melakukan fetchall() daripada SScursor menggunakan lebih banyak memori daripada dari kursor asas. Ini kerana SScursor mengambil keputusan secara berperingkat daripada pelayan dalam ketulan, manakala fetchall() memuat turun keseluruhan keputusan yang ditetapkan ke dalam memori. Oleh itu, menggunakan fetchall() menjadi berlawanan dengan intuitif untuk senario kekangan ingatan.
Lelaran ke atas Keputusan dengan SSCursor
Untuk menstrim hasil daripada SSkursor pada baris demi baris dengan cekap asas baris, gunakan kaedah berikut:
<code class="python">import MySQLdb.cursors connection=MySQLdb.connect( host="thehost",user="theuser", passwd="thepassword",db="thedb", cursorclass = MySQLdb.cursors.SSCursor) cursor=connection.cursor() cursor.execute(query) for row in cursor: print(row)</code>
Kaedah ini berulang pada set hasil tanpa menyimpan keseluruhan kandungan dalam ingatan, menggunakan sumber yang minimum.
Pengoptimuman Tambahan
Atas ialah kandungan terperinci Adakah Menggunakan fetchall() dengan MySQLDB SSCursor Sebenarnya Cekap untuk Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!