【发布时间】:2021-09-20 11:33:46
【问题描述】:
我注意到deleteMany 在我指定where 时使用了两个查询。它首先选择要删除的行的主键,然后使用DELETE FROM WHERE id IN (...) 查询将它们删除。
这个有什么用?而不是WHERE id IN (...) 查询,对我来说,只选择DELETE 查询本身中要删除的行会更有意义。
举个例子:
await this.prismaService.cardSet.deleteMany({ where: { steamAccountId: steamAccount.id } });
运行:
SELECT "public"."CardSet"."id" FROM "public"."CardSet" WHERE "public"."CardSet"."steamAccountId" = $1;
DELETE FROM "public"."CardSet" WHERE "public"."CardSet"."id" IN ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,...);
以下对我来说似乎更有效:
DELETE FROM "public"."CardSet" WHERE "public"."CardSet"."steamAccountId" = $1;
【问题讨论】: