PostgreSQL 데이터베이스에서 여러 행을 업데이트해야 하는 경우 기존 접근 방식에서는 각 행. 그러나 성능상의 이유로 단일 UPDATE 문을 실행하여 여러 행을 한 번에 업데이트하는 것이 바람직한 경우가 많습니다.
PostgreSQL에서 대량 업데이트를 위한 효과적인 방법 중 하나는 다음을 활용하는 것입니다. 파생 테이블. 이 기술에는 원하는 업데이트가 포함된 임시 테이블을 생성한 다음 해당 테이블의 데이터를 사용하여 대상 테이블을 업데이트하는 작업이 포함됩니다.
"테이블" 테이블의 여러 행을 새 항목으로 업데이트하려는 다음 시나리오를 고려해보세요. "column_a" 및 "column_b" 열의 값:
import ( "database/sql" _"github.com/jackc/pgx/v4/stdlib" // PostgreSQL driver ) func main() { db, err := sql.Open("pgx", "host=localhost port=5432 dbname=test user=postgres password=mysecretpassword") if err != nil { panic(err) } defer db.Close() // Prepare the derived table with updated values 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.Exec(query) if err != nil { panic(err) } // Optionally, you can verify the updated rows rows, err := db.Query("SELECT * FROM table WHERE id IN (1, 2)") if err != nil { panic(err) } defer rows.Close() for rows.Next() { var id int var columnA, columnB string if err := rows.Scan(&id, &columnA, &columnB); err != nil { panic(err) } fmt.Printf("ID: %d, Column A: %s, Column B: %s\n", id, columnA, columnB) } }
이 접근 방식은 기본 쿼리를 변경하지 않고도 파생 테이블에서 행과 열을 추가하거나 제거하는 유연성을 제공합니다. 또한 여러 UPDATE 문을 명시적으로 지정하는 것에 비해 우발적인 오류를 방지하는 데도 도움이 됩니다.
위 내용은 Go를 사용하여 PostgreSQL에서 대량 업데이트를 효율적으로 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!