跳至主要内容

LIKE 操作导致的完整表扫描

优化提供建议,帮助您识别和解决由 `LIKE` 操作导致的完整表扫描引起的性能问题。

以下针对 `User` 模型的查询提供了 `contains` 和 `endsWith` 作为选项,它们分别转换为 `LIKE` 和 `ILIKE` SQL 运算符。

await prisma.user.findMany({ 
where: {
email: { contains: "gmail.com" },
name: { endsWith: "Burk" }
}
})

问题是什么?

SQL 中的 `LIKE` 和 `ILIKE` 运算符可能会导致完整表扫描,这可能会影响性能,尤其是在大型数据集的情况下。

用户体验

  • 加载时间更长:完整表扫描会大幅增加检索数据所需的时间,导致用户等待时间更长。

资源利用率

  • 增加资源使用量:完整表扫描会增加 CPU、内存使用量和磁盘 I/O,给数据库的系统资源带来压力。
  • 增加成本:在无服务器数据库定价方案中,更密集的资源使用量会导致更高的成本。