Prisma
ルール
prisma/schema.prismaにスキーマを定義 — 単一の情報源includeではなくselectを使用 — 必要なフィールドのみを取得- 多段階のミューテーションにはトランザクション:
prisma.$transaction([...]) deletedAt DateTime?フィールドとミドルウェアフィルターによる論理削除- 頻繁にクエリされるフィールドにインデックス:
@@index([fieldName]) - リレーション: 常に両端を定義 (
@relation) - マイグレーション:
npx prisma migrate dev --name descriptive-name - サーバーレス環境でのコネクションプーリング: Prisma Accelerate または PgBouncer を使用
- 型生成: スキーマ変更後に
npx prisma generateを実行
避けるべきこと
- 1つのフィールドだけが必要なのに
include: { relation: true }を使用する — 代わりにselectを使用 - N+1 クエリ — ネストされたリレーションには
includeまたはselectを使用 - Prisma API で処理できるのに Raw SQL を使用する — 複雑な集計の場合のみ
$queryRawを使用 prisma.table.findMany()をtake制限なしで使用 — 常にページネーションを実施