【问题标题】:Is Laravel's 'pluck' method cheaper than a general 'get'?Laravel 的 'pluck' 方法比一般的 'get' 便宜吗?
【发布时间】:2021-11-10 08:19:25
【问题描述】:

我正在尝试为我正在构建的应用程序大幅减少昂贵的数据库查询,并认为我应该只返回子集合的 ID(然后从我的 React 状态中找到相关对象),而不是返回孩子们自己。

我想我是在问,如果我使用 'pluck' 只返回子 ID,是否比一般的 'get' 更有效,或者我会这是在浪费我的时间吗?

【问题讨论】:

  • 是的,我想是的。

标签: laravel eloquent laravel-eloquent


【解决方案1】:

是的,如果您尝试从表中检索单列,pluck 方法就可以了。

如果您使用 get() 方法,它将检索有关子模型的所有信息,这可能会导致查询和获取结果的过程稍慢。

所以在我看来,您正在使用很好的方法来检索结果。

Laravel 也有不同的选择查询方法。这里可以看Selects

【讨论】:

    【解决方案2】:

    在应用程序中执行数据库选择查询的最佳做法是选择必要的列。如果需要id 列,则应选择id 列,而不是所有列。否则,它将花费不必要的内存来保存未使用的数据。如果你头脑清楚,pluckget 是一样的:

    Model::pluck('id')
    
    // which is the same as
    
    Model::select('id')->get()->pluck('id');
    
    // which is the same as
    
    Model::get(['id'])->pluck('id');
    

    【讨论】:

      【解决方案3】:

      我知道我参加聚会有点晚了,但我自己也想知道这一点,所以我决定研究一下。它证明了一种方法比另一种方法更快。

      使用Model::select('id')->get() 比使用Model::get()->pluck('id') 快。

      这是因为Illuminate\Support\Collection::pluck 将遍历每个返回的Model 并使用 PHP foreach 循环仅提取选定的列,而第一种方法通常会降低成本,因为它是数据库查询。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-19
        • 1970-01-01
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多