【问题标题】:Are there practical limits to Eloquent ORM when eager loading?Eloquent ORM 在急切加载时是否存在实际限制?
【发布时间】:2018-06-05 19:37:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

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

    但是,对参数数量的严格限制可能是个问题。 SQL Server 只允许 2100 个参数,SQLite 只允许 999 个。这些限制可以用this package 绕过(自我推销)。

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

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 2017-10-09
      • 2017-09-28
      • 2021-10-02
      • 2019-01-22
      • 2017-09-30
      相关资源
      最近更新 更多