首页 > 解决方案 > Eloquent ORM 在急切加载时是否存在实际限制?

问题描述

在 Eager Loading 部分,https ://laravel.com/docs/5.6/eloquent-relationships#eager-loading,Laravel 指南解释说它正在执行一个WHERE... IN...查询。

IN该子句的参数数量是否有实际限制?例如,如果我在子句中有 100 个值,我应该开始查看不同的选项,例如表连接吗?

大概在大多数情况下,在我达到我的 RDBMS 的硬限制之前,性能将成为限制因素。

标签: laraveleloquent

解决方案


除非您有 10K+ 行,否则我认为性能不会成为问题。您几乎总是查询表的主键 ( id),它应该有一个索引,从而提供快速访问。

然而,对参数数量的硬限制可能是一个问题。SQL Server 只允许 2100 个参数,SQLite 只允许 999 个。这个包可以绕过这些限制(自我推广)。

WHERE IN查询变得太慢的情况下,JOIN 也不会更快。
如果您尝试获取 10K+ 行,创建模型对象也将花费大量时间。


推荐阅读