PrismaP
Prisma13mo ago
5 replies
MinatoTW

Query Performance

Hello, I wonder if there's any way to disable the extra SELECT queries made during updates.

For example: This is the query I'm using to update a player.

await tx.player.update({
  where: { user_id: state.player1_id },
  select: { id: true },
  data: {
    gold: { increment: player_gold },
    platinum: { decrement: attemptCost },
    potions: {
      updateMany: usedPotions.map((potion) => ({
        where: {
          potion_id: potion.potion.id,
          player_id: state.player1_id,
        },
        data: {
          quantity: potion.quantity,
        },
      })),
    },
  },
});


I see the following queries in the debug log:

api-1     | prisma:query UPDATE "public"."player_potions" SET "quantity" = $1 WHERE ("public"."player_potions"."id" IN ($2) AND 1=1)
api-1     | prisma:query SELECT "public"."player_potions"."id", "public"."player_potions"."player_id" FROM "public"."player_potions" WHERE (("public"."player_potions"."potion_id" = $1 AND "public"."player_potions"."player_id" = $2) AND "public"."player_potions"."player_id" IN ($3)) OFFSET $4
api-1     | prisma:query UPDATE "public"."player_potions" SET "quantity" = $1 WHERE ("public"."player_potions"."id" IN ($2) AND 1=1)
api-1     | prisma:query SELECT "public"."player_potions"."id", "public"."player_potions"."player_id" FROM "public"."player_potions" WHERE (("public"."player_potions"."potion_id" = $1 AND "public"."player_potions"."player_id" = $2) AND "public"."player_potions"."player_id" IN ($3)) OFFSET $4
api-1     | prisma:query UPDATE "public"."player_potions" SET "quantity" = $1 WHERE ("public"."player_potions"."id" IN ($2) AND 1=1)


Why is it making all those extra SELECT queries rather than just updating? I'm worried it might impact performance as we scale.
Was this page helpful?