PostgreSQL 中的高效批量行更新
在單一查詢中批次更新多行是用於提高資料庫效能的常見最佳化。 PostgreSQL 提供了強大的機制來促進此過程。
派生表方法
PostgreSQL 中批量更新的一種有效方法是利用派生表。此方法涉及建立一個包含所需更新的臨時表,然後使用它來修改目標表。
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;
此查詢建立一個包含特定行更新的衍生表 v。然後 UPDATE 語句使用該表來修改 t 表。 WHERE 子句確保更新僅套用於正確的行。
Go 語言範例
要在 Go中執行此查詢,您可以使用以下程式碼片段:
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.") }
派生表的好處方法
以上是如何使用派生表在 PostgreSQL 中有效執行批次行更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!