Dalam kod ini, penulis menyasarkan untuk mengoptimumkan sisipan lebih 1.3 juta baris ke dalam pangkalan data MS SQL Server . Pada masa ini, proses mengambil masa kira-kira 40 minit untuk memasukkan 300,000 baris. Berdasarkan kod yang disediakan, pendekatan berikut disyorkan untuk meningkatkan kelajuan pemasukan:
Arahan T-SQL BULK INSERT direka khusus untuk data pukal yang cekap memuatkan. Walau bagaimanapun, ia memerlukan fail sumber untuk ditempatkan pada mesin yang sama seperti contoh SQL Server atau di lokasi rangkaian yang boleh diakses melalui SMB/CIFS.
Pyodbc 4.0.19 memperkenalkan ciri fast_executemany dalam kelas Kursornya. Apabila didayakan, ciri ini mengoptimumkan pelaksanaan melaksanakan banyak pertanyaan, yang melibatkan memasukkan berbilang baris data.
Kod berikut menunjukkan cara menggunakan fast_executemany:
<code class="python">import pyodbc import time conn_str = 'connection string' cnxn = pyodbc.connect(conn_str, autocommit=True) crsr = cnxn.cursor() crsr.execute("TRUNCATE TABLE fast_executemany_test") sql = "INSERT INTO fast_executemany_test (txtcol) VALUES (?)" params = [(f'txt{i:06d}',) for i in range(1000)] t0 = time.perf_counter() crsr.executemany(sql, params) print(f'{time.perf_counter() - t0:.1f} seconds') crsr.fast_executemany = True t0 = time.perf_counter() crsr.executemany(sql, params) print(f'{time.perf_counter() - t0:.1f} seconds')</code>
Dalam kod di atas, mendayakan fast_executemany mengurangkan masa pelaksanaan dengan ketara.
Daripada mengulangi baris satu demi satu, pertimbangkan untuk menggunakan senarai atau tatasusunan NumPy untuk menyimpan data dan kemudian masukkan keseluruhan koleksi dalam satu laksanakan banyak panggilan. Pendekatan ini menghapuskan overhed pelaksanaan kursor berulang.
Dengan melaksanakan pengoptimuman ini, adalah mungkin untuk meningkatkan prestasi operasi sisipan pukal secara drastik dalam MS SQL Server menggunakan pyodbc.
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Kelajuan Masukkan Pukal ke MS SQL Server Menggunakan Pyodbc?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!