выполнение запроса SQL SELECT внутри цикла - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть таблица leave_muster, внутри которой я должен обновлять все записи предыдущего месяца при каждом начале нового месяца.

Мой код

public function sync()
    {
        $pre_month = (int)date('m') - 1;

        $data = $this->Leave_muster_model->get_by_month($pre_month);

        $updated_data = [];

        foreach ($data as $key => $value) {

            // Fetch each employee details to perform some check
            // Then update the array and 

            $updated_data[$key] = [
                'emp_id'                   => $value->emp_id,
                'accumulated_leaves'       => 0.0,
                'total_accumulated_leaves' => 0.0,
                'leave_taken'              => 0.0,
                'salary_deducted_days'     => 0.0,
                'leave_balance'            => 0.0,
                'month'                    => date('m'),
                'year'                     => date('Y'),
                'created_date'             => date('Y-m-d')
            ];
        }

    }
}

В приведенном выше коде я должен получить данные о сотруднике перед обновлением листов для выполнения некоторых проверок, поэтому у меня есть два способа

  1. Перед выполнением проверок извлекайте данные сотрудника внутри цикла.
  2. Извлечь все данные о сотрудниках за пределами цикла в массив, а затем получить сотрудника по идентификатору сотрудника для выполнения проверок

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

Язык: PHPКаркас: Codeigniter

1 Ответ

3 голосов
/ 23 апреля 2019

Как правило, я отношусь к вызовам в моей базе данных как к дорогим; Я работаю над тем, чтобы уменьшить количество вызовов базы данных, которые выполняют мои скрипты. Таким образом, я, вероятно, загрузил бы всех сотрудников, а затем выполнил бы цикл.

Это предполагает, что не будет много сотрудников. В этом случае вы столкнетесь с проблемами с памятью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...