一尘不染

Laravel Eloquent vs查询构建器-为什么使用eloquent降低性能

mysql

已关闭 。这个问题需要更加集中。它当前不接受答案。


想改善这个问题吗? 更新问题,使其仅通过编辑此帖子来关注一个问题。

6个月前关闭。

我在Laravel查询生成器和雄辩者之间进行了一些性能测试。使用各种sql语句(select-update-delete-
insert),查询生成器要快得多。

所以我的问题是:为什么有人对普通查询生成器使用Laravel Eloquent?


阅读 401

收藏
2020-05-17

共1个答案

一尘不染

雄辩的是Laravel的Active Record模式的实现,它具有所有优点和缺点。

Active Record是用于以CRUD方式处理单个实体的好解决方案-即创建具有填充属性的新实体,然后将其保存到数据库,从数据库加载记录或删除。

您将从Eloquent的功能中受益匪浅,例如脏检查(仅针对已更改的字段发送SQL
UPDATE),模型事件(例如,在有人创建新帐户时发送管理警报或更新统计信息计数器),特征(时间戳,软删除,自定义特征)急切/延迟加载等。您还可以应用域驱动模式并在Active
Record实体中实现一些业务逻辑,例如验证,管理关系,计算等。

但是,正如您已经知道的那样,Active Record附带了一些性能价格。

当您处理一条记录或几条记录时,无需担心。但是对于读取大量记录的情况(例如,用于数据网格,用于报告,用于批处理等),普通的Laravel
DB方法是更好的方法。

对于基于Laravel的应用程序,我们认为合适的是同时使用两种方法。我们使用Laravel的Eloquent for
UI表单来处理一条记录,并使用DB方法(由SQL视图支持,并进行了其他数据库引擎特定的性能调整)来检索UI表,导出任务等的数据。它还与RESTful
API配合使用-Eloquent for GET ,PUT,POST,DELETE(带键),DB而GET(不带键)但具有过滤器,排序和分页。

2020-05-17