梗概

  • 请求一组数据,拿到多少id,想要拿到每条数据的关联数据,就要getdetail多少次

场景

  • N+1问题 是在数据库查询中常见的性能问题,特别是在使用ORM(对象关系映射)时容易出现。它的主要症状是执行了许多不必要的查询,导致性能下降。
  • 不好的影响:前端面临n+1问题就要消耗过多的网络资源

示例解释

假设我们有两个表:User 和 Balance,它们通过 user_id 关联。我们需要查询所有年龄大于18岁的用户及其余额。

  1. 初始查询:首先查询符合条件的用户列表,这个查询执行一次。

    SELECT * FROM User WHERE age > 18;

    AI-generated code. Review and use carefully. .

  2. 后续查询:然后对每个用户再进行一次查询以获取其余额。如果有N个用户,这个查询会执行N次。

    SELECT * FROM Balance WHERE user_id = ?;

这样,总共执行了1 + N次查询,这就是N+1问题

解决方案