MagicStack / MagicStack/asyncpg

Difference between bulk update with FROM VALUES and without it?

Abierto
#1,055 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Python
Estrellas
8.1k
Forks
468
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

await conn.executemany(
    """
    UPDATE user SET login=$2, name=$3, age=$4, sex=$5
    WHERE id=$1
    """,
    users,
)
await conn.executemany(
    """
    UPDATE user SET login=actual_user.login, name=actual_user.name, age=actual_user.age, sex=actual_user.sex
    FROM (VALUES ($1, $2, $3, $4, $5)) AS actual_user (id, login, name, age::integer, sex::integer)
    WHERE user.id=actual_user.id
    """,
    users,
)

The first is cleaner. But I worry about performance. I know the second is performed as one request. But the first is the same?

Is there any reason to use the second way?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con el punto de entrada de executemany de asyncpg y la semántica de UPDATE ... FROM VALUES de PostgreSQL, comparando tanto los ejemplos de SQL como el comportamiento de sus solicitudes. El trabajo estaría terminado con una explicación claramente documentada de si los enfoques difieren en rendimiento o propósito, y de cuándo resulta útil la segunda forma.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
postgresql, python
Área
databases
Tipo de issue
Documentación
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.