Laravel whereHas 查询特别慢(性能差)的解决办法
admin 阅读:88 2024-03-03
Laravel 的模型关联功能提供了功能强大的数据库操作封装,其中 whereHas 方法可以简洁明了将「where」条件放到 has 查询上。这些方法允许你向关联加入自定义约束。
但是在 whereHas 方法会全表扫描做表, 在生成 SQL 的时候会使用 select * from A where exists ( select * from B where … ) 。当我们的左表远远大于右表时,A 表就成了性能瓶颈。导致查询非常缓慢。
解决办法:
1.whereHas性能调优——采用 where in 语法实现优化 查询关联
2.[扩展包] Laravel-wherehasin 提升 ORM 关联关系查询性能 (优化 whereHas 性能)
3.手写sql,避免使用 where exists,而是使用 where in
声明
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!