Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melaksanakan Kemas Kini Baris Pukal dengan Cekap dalam PostgreSQL Menggunakan Jadual Terbitan?

Bagaimanakah Saya Boleh Melaksanakan Kemas Kini Baris Pukal dengan Cekap dalam PostgreSQL Menggunakan Jadual Terbitan?

DDD
DDDasal
2024-12-09 20:27:191000semak imbas

How Can I Efficiently Perform Bulk Row Updates in PostgreSQL Using Derived Tables?

Kemas Kini Baris Pukal yang Cekap dalam PostgreSQL

Mengemas kini berbilang baris secara pukal dalam satu pertanyaan ialah pengoptimuman biasa yang digunakan untuk meningkatkan prestasi pangkalan data. PostgreSQL menyediakan mekanisme yang berkuasa untuk memudahkan proses ini.

Pendekatan Jadual Terbitan

Satu pendekatan berkesan untuk kemas kini pukal dalam PostgreSQL ialah menggunakan jadual terbitan. Pendekatan ini melibatkan mencipta jadual sementara dengan kemas kini yang diingini dan kemudian menggunakannya untuk mengubah suai jadual sasaran.

UPDATE t
SET column_a = v.column_a,
    column_b = v.column_b
FROM (VALUES (1, 'FINISH', 1234),
             (2, 'UNFINISH', 3124)
      ) v(id, column_a, column_b)
WHERE v.id = t.id;

Pertanyaan ini mencipta jadual terbitan v dengan kemas kini baris tertentu. Kenyataan UPDATE kemudian menggunakan jadual ini untuk mengubah suai jadual t. Klausa WHERE memastikan kemas kini hanya digunakan pada baris yang betul.

Contoh Bahasa Go

Untuk melaksanakan pertanyaan ini dalam Go, anda boleh menggunakan coretan kod berikut :

import (
    "context"
    "database/sql"
    "fmt"
)

func main() {
    db, err := sql.Open("postgres", "host=localhost user=postgres password=password dbname=postgres sslmode=disable")
    if err != nil {
        panic(err)
    }
    ctx := context.Background()

    query := `
    UPDATE t
    SET column_a = v.column_a,
        column_b = v.column_b
    FROM (VALUES (1, 'FINISH', 1234),
                 (2, 'UNFINISH', 3124)
         ) v(id, column_a, column_b)
    WHERE v.id = t.id;
    `

    _, err = db.ExecContext(ctx, query)
    if err != nil {
        panic(err)
    }

    fmt.Println("Rows updated successfully.")
}

Faedah Jadual Terbitan Pendekatan

  • Fleksibiliti: Tambah atau alih keluar baris dan lajur pada kemas kini dengan mudah tanpa mengubah suai pertanyaan utama.
  • Kesederhanaan: Pendekatan jadual terbitan agak mudah untuk difahami dan laksanakan.
  • Kecekapan: Ia berfungsi dengan baik dalam senario di mana sejumlah besar baris perlu dikemas kini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kemas Kini Baris Pukal dengan Cekap dalam PostgreSQL Menggunakan Jadual Terbitan?. 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