在“预先加载”部分https://laravel.com/docs/5.6/eloquent-relationships#eager-loading中,Laravel指南解释说它正在执行WHERE... IN...
查询。
IN
子句的参数数量是否存在实际限制?例如,如果我在子句中有100个值,我应该开始查看不同的选项,例如表连接吗?
据推测,在大多数情况下,在达到RDBMS的硬限制之前,性能将成为限制因素。
答案 0 :(得分:1)
除非你有10K +行,否则我认为性能不会成为问题。您几乎总是查询表的主键(id
),该主键应具有索引,从而提供快速访问。
然而,参数数量的硬限制可能是个问题。 SQL Server仅允许2100个参数,SQLite仅允许999个。可以使用this package(自我推销)绕过这些限制。
如果WHERE IN
查询变得太慢,则JOIN也不会更快
如果您尝试获取10K +行,则创建模型对象也将花费大量时间。