LIKE操作によるフルテーブルスキャン
Optimizeは、`LIKE`操作によるフルテーブルスキャンが原因で発生するパフォーマンスの問題を特定し、解決するための推奨事項を提供します。
`User`モデルを対象とする次のクエリは、`contains`と`endsWith`をオプションとして提供します。これらは`LIKE`および`ILIKE` SQL演算子に変換されます。
await prisma.user.findMany({
where: {
email: { contains: "gmail.com" },
name: { endsWith: "Burk" }
}
})
問題点とは?
SQLにおける`LIKE`および`ILIKE`演算子は、フルテーブルスキャンを引き起こし、特に大規模なデータセットの場合にパフォーマンスに影響を与える可能性があります。
UX
- 読み込み時間の遅延: フルテーブルスキャンは、データ取得にかかる時間を大幅に増加させ、ユーザーの待機時間を長くする可能性があります。
リソース利用率
- リソース使用量の増加: フルテーブルスキャンは、CPU、メモリ使用量、ディスクI/Oを増加させ、データベースのシステムリソースに負荷をかけます。
- コストの増加: サーバーレスデータベースの料金プランでは、集中的なリソース使用量がコストの増加につながる可能性があります。