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
想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Laravel whereHas 查询特别慢(性能差)的解决办法
本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
如有侵权请发送邮件至1943759704@qq.com删除
码农资源网 » Laravel whereHas 查询特别慢(性能差)的解决办法