Go를 사용하는 PostgreSQL의 다중 행 대량 업데이트
대규모 데이터 세트로 작업할 때 데이터베이스 테이블의 여러 행을 업데이트해야 하는 경우가 많습니다. 단일 작업으로. 이를 통해 성능을 최적화하고 코드 복잡성을 줄일 수 있습니다. PostgreSQL에서는 다양한 접근 방식을 사용하여 대량 업데이트를 수행할 수 있습니다.
한 가지 접근 방식은 파생 테이블을 사용하여 업데이트할 값 집합을 구성하는 것입니다. FROM 절을 활용하면 업데이트해야 하는 각 행의 값을 지정할 수 있습니다. 예를 들면 다음과 같습니다.
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에는 각 행의 업데이트를 나타내는 (id,column_a,column_b) 쌍이 포함되어 있습니다. 그런 다음 UPDATE 문은 WHERE 절을 사용하여 v의 id 값을 대상 테이블 t의 id 값과 일치시킵니다.
Go에서는 준비된 문을 사용하여 이 쿼리를 실행할 수 있습니다.
const updateBulkSQL = ` UPDATE t SET column_a = v.column_a, column_b = v.column_b FROM (VALUES (, , ), (, , ) ) v(id, column_a, column_b) WHERE v.id = t.id; ` func main() { db, err := sql.Open("postgres", "") if err != nil { // Handle error } stmt, err := db.Prepare(updateBulkSQL) if err != nil { // Handle error } _, err = stmt.Exec(1, "FINISH", 1234, 2, "UNFINISH", 3124) if err != nil { // Handle error } }
이 접근 방식은 PostgreSQL에서 대량 업데이트를 수행하는 간결하고 효율적인 방법을 제공하므로 각 행에 대해 별도의 쿼리를 실행할 필요 없이 단일 쿼리에서 여러 행을 업데이트할 수 있습니다.
위 내용은 Go를 사용하여 PostgreSQL에서 다중 행 대량 업데이트를 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!