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
Lepaskan: 2024-12-09 20:27:19
asal
965 orang telah melayarinya

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;
Salin selepas log masuk

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.")
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan