-
我的列表页明明感觉只查了一次数据库,慢查询日志里却冒出几百条 SQL,页面慢得像蜗牛,最后揪出是 ORM 的 N+1 查询在背后疯狂打库的深度复盘
我用 ORM 做订单列表页,查出订单后遍历,用 order.getUser().getName() 显示用户名,代码里只写了一句查询。可页面慢得要命,慢查询日志里竟冒出几百条几乎一样的"按 id 查用户"的 SQL——一条订单对应一条!深究才懂这是经典的 N+1 查询:ORM 懒加载在查订单时没带出 user,直到我在循环里访问 getUser() 才偷偷各发一条 SQL,N …- 0
- 0
-
订单列表接口越来越慢、代码里明明只查一次,打开 ORM 的 SQL 日志却刷出几百条 SQL:数据库 N+1 查询问题的避坑复盘
这是一个明明只查了一次数据库却累成狗的性能事故。我们一个订单列表接口随着数据量增长变得越来越慢,一页几十条订单要好几秒才能返回。我盯着代码看逻辑特别简单:查出这一页的订单列表然后在返回给前端前给每个订单补上下单用户的名字,代码里就一句查订单列表啊能慢到哪去?直到我打开了 ORM 框架的 SQL 日志准备看看那条查询到底慢在哪,结果屏幕上哗啦一下刷出了几百条 SQL,我揉了揉眼睛:我明明只想查一次订…- 0
- 0
懒加载
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!


