Каково оптимальное решение в данном случае

#mysql #laravel #eloquent #laravel-models

#mysql #laravel #красноречивый #laravel-модели

Вопрос:

Я хотел бы получить вашу рекомендацию.

     // 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();
 

Примечание: число пользователей станет больше, чем минимум на 1 миллион.
Спасибо всем

Комментарии:

1. мы здесь для MCQ?

Ответ №1:

я думаю, что решение 1 лучше

потому что в решении 2 вы получаете все данные из базы данных, а затем подсчитываете их, и это занимает гораздо больше времени, чем просто подсчет их в решении 1

итак, мой выбор — решение 1

Ответ №2:

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) }}