Mises à jour groupées efficaces des lignes dans PostgreSQL
La mise à jour groupée de plusieurs lignes dans une seule requête est une optimisation courante utilisée pour améliorer les performances de la base de données. PostgreSQL fournit des mécanismes puissants pour faciliter ce processus.
Approche de table dérivée
Une approche efficace pour les mises à jour groupées dans PostgreSQL consiste à utiliser une table dérivée. Cette approche consiste à créer une table temporaire avec les mises à jour souhaitées, puis à l'utiliser pour modifier la table cible.
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;
Cette requête crée une table dérivée v avec les mises à jour de lignes spécifiques. L'instruction UPDATE utilise ensuite cette table pour modifier la table t. La clause WHERE garantit que les mises à jour sont appliquées uniquement aux lignes correctes.
Exemple de langage Go
Pour exécuter cette requête dans Go, vous pouvez utiliser l'extrait de code suivant :
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.") }
Avantages de la table dérivée Approche
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!