在循环内执行SQL SELECT查询

时间:2019-04-23 08:29:40

标签: php mysql codeigniter-3

我有一个表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. 将所有员工详细信息从循环中获取到 数组,然后按员工ID获取员工进行执行检查

我想知道哪种方法更好,因为我知道在将来的任何给定时间点,桌子上都不会有数百万的员工。

语言:PHP
框架:Codeigniter

1 个答案:

答案 0 :(得分:3)

通常,我将对数据库的调用视为昂贵;我努力减少脚本执行的数据库调用次数。因此,我可能会加载所有员工,然后遍历整个循环。

这假设员工人数不多。在这种情况下,您会遇到内存问题。