laravel wherehas has 查询非常慢 怎么优化喃?

select * from users where exists (select * from posts where users.id=posts.user_id and start_at >= ‘2022-09-09’)

users表非常大于100万 posts表非常小于1000条

使用 wherehas has 查询非常慢 怎么优化喃? 使用的是下面的这个模型查询

User::query()->whereHas('posts',function ($query){
            $query->where('start_at','>=','2022-09-09');
        })->get();
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
whereIn('id', Post::select(['user_id']);
2年前 评论
tiantian10000 (楼主) 2年前
Imuyu (作者) 2年前
讨论数量: 10

尝试修改为id in(select )试试

2年前 评论
tiantian10000 (楼主) 2年前
select * from posts p left join user u on p.user_id = u.id
2年前 评论
tiantian10000 (楼主) 2年前
whereIn('id', Post::select(['user_id']);
2年前 评论
tiantian10000 (楼主) 2年前
Imuyu (作者) 2年前

in 适用于左边大表,右边小表 exists 适用于左边小表,右边大表。

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!