Orm订单关联用户600w条数据云数据库卡
orm生成的sql如下
select
*
from
`yoshop_order`
where
`p_type` = 'is_tuan'
and exists (
select
*
from
`yoshop_user`
where
`yoshop_order`.`user_id` = `yoshop_user`.`user_id`
and `mobile` = '17768632282'
)
order by
`order_id` desc
limit
20 offset 0
问题描述
laravel版本 5.8.*
用户表4w,订单表600w, 使用 dcat-admin(也是使用的laravel-orm),代码如下
return Grid::make(PinOrder::with('user'), function (Grid $grid) {});
订单表索引
订单表p_type
字段类型(应该不是null不走索引的)
我的排查
借助Laravel Telescope - Laravel
获取到执行的sql,然后使用EXPLAIN
分析sql。
分析结果
分析结果符合预期,但是把EXPLAIN
去掉后在执行查询数据,就会卡住不会动。我该如何优化他。
ps: 在下面的帮助下,我使用join跑了下sql结果正常,但是这个问题 可不可以由laravel的orm覆写那些方法解决。尽量在用dcat-admin的情况下不去写sql,使用orm直接解决。
LEFT JOIN
试试