Maison >base de données >tutoriel mysql >Comment puis-je mettre à jour efficacement plusieurs lignes simultanément dans PostgreSQL ?

Comment puis-je mettre à jour efficacement plusieurs lignes simultanément dans PostgreSQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-12 22:56:49987parcourir

How Can I Efficiently Update Multiple Rows Concurrently in PostgreSQL?

Optimisation des mises à jour multi-lignes PostgreSQL

La mise à jour efficace de nombreuses lignes dans PostgreSQL est cruciale pour la gestion des bases de données. Tandis que les instructions UPDATE individuelles fonctionnent, PostgreSQL propose des méthodes plus efficaces pour les mises à jour par lots.

Une approche utilise la syntaxe UPDATE ... SET avec plusieurs clauses WHERE :

<code class="language-sql">UPDATE table
SET
  column_a = 1 WHERE column_b = '123',
  column_a = 2 WHERE column_b = '345';</code>

Cependant, cette méthode manque de flexibilité pour les mises à jour complexes sur plusieurs colonnes.

Une approche supérieure exploite la syntaxe UPDATE ... FROM avec une table de valeurs :

<code class="language-sql">UPDATE test AS t SET
  column_a = c.column_a
FROM (VALUES
  ('123', 1),
  ('345', 2)
) AS c(column_b, column_a)
WHERE c.column_b = t.column_b;</code>

Cette technique gère facilement les mises à jour multi-colonnes :

<code class="language-sql">UPDATE test AS t SET
  column_a = c.column_a,
  column_c = c.column_c
FROM (VALUES
  ('123', 1, '---'),
  ('345', 2, '+++')
) AS c(column_b, column_a, column_c)
WHERE c.column_b = t.column_b;</code>

Ces techniques avancées améliorent considérablement les performances de mise à jour par lots dans PostgreSQL, réduisant le temps d'exécution et simplifiant la maintenance de la base de données.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn