在这种情况下,最好的解决方案是什么

问题描述

我想得到你的推荐。

    // Solution one 
    $total_user=User::count();
    $active_user=User::where('active','active')->count();
    
    
    // Solution two 
    $user = User::all();
    $total_user=$user->count();
    $active_user=$user->where('active','active')->count();

注意:用户数量将至少超过 100 万。
谢谢大家

解决方法

我认为解决方案 1 更好

因为在解决方案 2 中,您从数据库中获取所有数据,然后对其进行计数,这比在解决方案 1 中仅计算它们花费的时间要多得多

所以我的选择是解决方案 1

,

1- 首先我们用一个查询拉取所有记录

$users = User::select('id','active')->get();

注意: 使用SELECET,如果不需要其他重要的用户信息以加快速度,我们只带上属于用户的选定字段。

2- 我们过滤

$active_users    = $users->filter(function ($row) {
   return $row->aktive == 'active';
});

3- 然后我们写(在视图中)

Total :{{ count($users) }}
Active :{{ count($active_users) }}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...