首页 > 数据库技术 > 详细

数据库查询的 N + 1 问题

时间:2018-03-01 00:17:01      阅读:247      评论:0      收藏:0      [点我收藏+]

数据库查询的 N + 1 问题(转载)

N + 1 问题在 ORM 中普遍存在,常见于遍历操作中

N + 1 怎么来

假设需要现在需要查找模型 A 的 n 条数据,而模型 A 又关联了另外多个的模型,这里假设 A 关联了模型 B 和 C. 现在需要查找 n 条 A 的记录(这里需要 1 条 SQL 语句),同时把这 n 条记录关联的 B, C 记录也查出来(这里需要 n 条查询 B 的语句和 n 条查询 C 的语句),于是最后需要的 SQL 语句数目为 2n + 1.

将 2n 抽象出来,假设需要查找的是 n 条 A 的记录(count(SQL) = 1),同时需要把与 A 关联的 k 个模型的记录也查找处理出来(count(SQL) = n * k), 设 n * k = N, 最后查询的 SQL 语句数目,即 N + 1

Laravel 中解决 N + 1 问题

  • 使用预加载功能
  • 使用 with() 方法,会做缓存
    • with() 中放需要查询的关联属性

数据库查询的 N + 1 问题

原文:https://www.cnblogs.com/leilei-1/p/8486042.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!