Rumah >masalah biasa >Bagaimana untuk memasukkan kumpulan ke dalam pilihan

Bagaimana untuk memasukkan kumpulan ke dalam pilihan

小老鼠
小老鼠asal
2024-05-10 00:36:201576semak imbas

Menggunakan pernyataan INSERT INTO SELECT untuk sisipan kelompok secara berkesan boleh meningkatkan kecekapan memasukkan sejumlah besar data Langkah-langkah khusus adalah seperti berikut: Tentukan saiz kelompok, beberapa ribu baris disyorkan. Cipta jadual sementara untuk menyimpan subset data yang hendak disisipkan. Gunakan pernyataan INSERT INTO SELECT untuk memasukkan data daripada jadual sumber ke dalam jadual sementara, menggunakan klausa LIMIT untuk mengehadkan bilangan baris yang dimasukkan pada satu masa. Gunakan pernyataan INSERT INTO SELECT sekali lagi untuk memasukkan data daripada jadual sementara ke dalam jadual sasaran. Padamkan jadual sementara yang tidak diperlukan lagi.

Bagaimana untuk memasukkan kumpulan ke dalam pilihan

Cara menggunakan pernyataan INSERT INTO SELECT untuk sisipan kelompok

Apabila anda perlu memasukkan sejumlah besar data dari satu jadual ke jadual lain, gunakan INSERT INTO SELECT pernyataan untuk sisipan kelompok Sisipan boleh meningkatkan kecekapan. Sisipan berkelompok dilaksanakan dengan memecahkan operasi sisipan besar kepada kelompok yang lebih kecil, dengan itu mengurangkan tekanan pada pelayan pangkalan data. INSERT INTO SELECT 语句进行分批插入可以提高效率。分批插入通过将大型插入操作分解成较小的批次来实现,从而减少对数据库服务器的压力。

步骤:

  1. 确定批次大小: 选择一个合适的批次大小,既能充分利用数据库服务器的资源,又不占用过多内存。一个好的经验法则是将批次大小设置为几千行。
  2. 创建临时表: 创建一个临时表来存储要插入的数据的子集。临时表只在当前会话中存在,可用于将数据划分为批次。
  3. 使用 INSERT INTO SELECT 语句插入数据: 编写一个 INSERT INTO SELECT 语句,将数据从源表插入到临时表。使用 LIMIT 子句限制每次插入的行数,以创建一个批次。
<code class="sql">INSERT INTO #temp_table
SELECT TOP (@batch_size) *
FROM source_table
WHERE NOT EXISTS (SELECT 1 FROM destination_table WHERE id = source_table.id);</code>
  1. 从临时表插入到目标表: 再次使用 INSERT INTO SELECT 语句,将数据从临时表插入到目标表。
<code class="sql">INSERT INTO destination_table
SELECT * FROM #temp_table;</code>
  1. 删除临时表: 插入完成后,删除不再需要的临时表。
<code class="sql">DROP TABLE #temp_table;</code>

优点:

  • 提高插入性能
  • 减少对数据库服务器的压力
  • 便于控制批次大小

注意:

  • 使用 IDENTITY_INSERT
  • Langkah:
    Tentukan saiz kelompok:🎜Pilih saiz kelompok yang sesuai yang boleh menggunakan sepenuhnya sumber pelayan pangkalan data tanpa menggunakan terlalu banyak memori. Peraturan yang baik ialah menetapkan saiz kelompok kepada beberapa ribu baris. 🎜🎜🎜Buat jadual sementara: 🎜 Buat jadual sementara untuk menyimpan subset data yang hendak dimasukkan. Jadual sementara hanya wujud dalam sesi semasa dan boleh digunakan untuk membahagikan data kepada kelompok. 🎜🎜🎜Sisipkan data menggunakan pernyataan INSERT INTO SELECT: 🎜 Tulis pernyataan INSERT INTO SELECT untuk memasukkan data daripada jadual sumber ke jadual sementara. Gunakan klausa LIMIT untuk mengehadkan bilangan baris yang disisipkan pada satu masa untuk membuat satu kelompok. 🎜rrreee
      🎜🎜Sisipkan daripada jadual sementara ke jadual sasaran: 🎜 Gunakan pernyataan INSERT INTO SELECT sekali lagi untuk memasukkan data daripada jadual sementara ke dalam jadual sasaran . 🎜
    rrreee
      🎜🎜Padam jadual sementara: 🎜 Selepas pemasukan selesai, padamkan jadual sementara yang tidak diperlukan lagi. 🎜
    rrreee🎜🎜Kelebihan:🎜🎜
      🎜Tingkatkan prestasi sisipan🎜🎜Kurangkan tekanan pada pelayan pangkalan data🎜🎜Mudah untuk mengawal saiz kelompok🎜🎜🎜🎜Nota:🎜🎜Use:🎜 Pilihan IDENTITY_INSERT boleh menyebabkan konflik kunci utama. 🎜🎜Pastikan jadual sumber dan sasaran mempunyai skema yang serasi. 🎜🎜Pantau proses pemasukan untuk memastikan integriti data. 🎜🎜

    Atas ialah kandungan terperinci Bagaimana untuk memasukkan kumpulan ke dalam pilihan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    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