Heim > häufiges Problem > Hauptteil

So fügen Sie stapelweise in die Auswahl ein

小老鼠
Freigeben: 2024-05-10 00:36:20
Original
1536 Leute haben es durchsucht

Die Verwendung der INSERT INTO SELECT-Anweisung zum Batch-Einfügen kann die Effizienz beim Einfügen großer Datenmengen effektiv verbessern. Die spezifischen Schritte sind wie folgt: Bestimmen Sie die Batch-Größe, mehrere tausend Zeilen werden empfohlen. Erstellen Sie eine temporäre Tabelle, um die Teilmenge der einzufügenden Daten zu speichern. Verwenden Sie die INSERT INTO SELECT-Anweisung, um Daten aus der Quelltabelle in die temporäre Tabelle einzufügen. Verwenden Sie dabei die LIMIT-Klausel, um die Anzahl der gleichzeitig eingefügten Zeilen zu begrenzen. Verwenden Sie die INSERT INTO SELECT-Anweisung erneut, um Daten aus der temporären Tabelle in die Zieltabelle einzufügen. Löschen Sie temporäre Tabellen, die nicht mehr benötigt werden.

So fügen Sie stapelweise in die Auswahl ein

So verwenden Sie die INSERT INTO SELECT-Anweisung für die Stapeleinfügung

Wenn Sie eine große Datenmenge von einer Tabelle in eine andere Tabelle einfügen müssen, verwenden Sie den INSERT INTO SELECT Anweisung zum Batch-Einfügen Das Einfügen kann die Effizienz verbessern. Batch-Einfügungen werden implementiert, indem große Einfügungsvorgänge in kleinere Batches aufgeteilt werden, wodurch die Belastung des Datenbankservers verringert wird. 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>
Nach dem Login kopieren
  1. 从临时表插入到目标表: 再次使用 INSERT INTO SELECT 语句,将数据从临时表插入到目标表。
<code class="sql">INSERT INTO destination_table
SELECT * FROM #temp_table;</code>
Nach dem Login kopieren
  1. 删除临时表: 插入完成后,删除不再需要的临时表。
<code class="sql">DROP TABLE #temp_table;</code>
Nach dem Login kopieren

优点:

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

注意:

  • 使用 IDENTITY_INSERT
  • Schritte:
    Bestimmen Sie die Batchgröße:🎜Wählen Sie eine geeignete Batchgröße, die die Ressourcen des Datenbankservers vollständig nutzen kann, ohne zu viel Speicher zu beanspruchen. Eine gute Faustregel besteht darin, die Stapelgröße auf einige tausend Zeilen festzulegen. 🎜🎜🎜Temporäre Tabelle erstellen: 🎜 Erstellen Sie eine temporäre Tabelle, um eine Teilmenge der einzufügenden Daten zu speichern. Temporäre Tabellen existieren nur innerhalb der aktuellen Sitzung und können zum Aufteilen von Daten in Stapel verwendet werden. 🎜🎜🎜Daten mit der INSERT INTO SELECT-Anweisung einfügen: 🎜 Schreiben Sie eine INSERT INTO SELECT-Anweisung, um Daten aus der Quelltabelle in die temporäre Tabelle einzufügen. Verwenden Sie die LIMIT-Klausel, um die Anzahl der gleichzeitig eingefügten Zeilen zu begrenzen, um einen Stapel zu erstellen. 🎜rrreee
      🎜🎜Aus temporärer Tabelle in Zieltabelle einfügen: 🎜 Verwenden Sie die Anweisung INSERT INTO SELECT erneut, um Daten aus der temporären Tabelle in die Zieltabelle einzufügen . 🎜
    rrreee
      🎜🎜Temporäre Tabelle löschen: 🎜 Nachdem das Einfügen abgeschlossen ist, löschen Sie die temporäre Tabelle, die nicht mehr benötigt wird. 🎜
    rrreee🎜🎜Vorteile:🎜🎜
      🎜Verbesserung der Einfügeleistung🎜🎜Reduzieren Sie den Druck auf den Datenbankserver🎜🎜Einfache Steuerung der Stapelgröße🎜🎜🎜🎜Hinweis:🎜🎜
        🎜Verwenden Sie The Die Option IDENTITY_INSERT kann zu Primärschlüsselkonflikten führen. 🎜🎜Stellen Sie sicher, dass die Quell- und Zieltabellen kompatible Schemata haben. 🎜🎜Überwachen Sie den Einfügungsprozess, um die Datenintegrität sicherzustellen. 🎜🎜

    Das obige ist der detaillierte Inhalt vonSo fügen Sie stapelweise in die Auswahl ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage