gpt4 book ai didi

php - 如何减少mysql、codeigniter数据的加载时间

转载 作者:行者123 更新时间:2023-11-29 19:43:09 25 4
gpt4 key购买 nike

我有大约 400 多条记录要从此方法检索,加载页面几乎需要 2 分钟。所以请帮助我如何减少这个方法的加载时间。

function teacher_attendance_selector()

{

$data['year'] = $this->input->post('year');
$data['timestamp'] =strtotime($this->input->post('timestamp'));
$query = $this->db->get_where('teacher_attendance' ,array(
'teacher_id'=>$data['teacher_id'],
'year'=>$data['year'],

));



if($query->num_rows() < 1) {
$teachers = $this->db->get_where('teacher' , array(

))->result_array();

foreach($teachers as $row) {
$attn_data['year'] = $data['year'];
$attn_data['timestamp'] = $data['timestamp'];
$attn_data['teacher_id'] = $row['teacher_id'];

$this->db->insert('teacher_attendance' , $attn_data);
}

}
redirect(base_url().'index.php?admin/manage_teacher_attendance_view/'.$data['timestamp'],'refresh');
}

最佳答案

您的插入查询花费了很长时间。按照下面建议的方式,您可以将所有数据存储在一个数组中,然后只需使用一个查询即可插入该数组中存储的所有记录。

请参阅下面的代码,您将获得更多如何实现性能的想法。

function teacher_attendance_selector()

{

$data['year'] = $this->input->post('year');
$data['timestamp'] =strtotime($this->input->post('timestamp'));
$query = $this->db->get_where('teacher_attendance' ,array(
'teacher_id'=>$data['teacher_id'],
'year'=>$data['year'],

));



if($query->num_rows() < 1) {
$teachers = $this->db->get_where('teacher' , array())->result_array();

$arr_batchinsert = array();

foreach($teachers as $row) {
$attn_data['year'] = $data['year'];
$attn_data['timestamp'] = $data['timestamp'];
$attn_data['teacher_id'] = $row['teacher_id'];

// PREPARE ARRAY FOR BATCH INSERT
$arr_batchinsert = $attn_data;
}

// insert here using insert_batch
$this->db->insert_batch('teacher_attendance', $arr_batchinsert );


}
redirect(base_url().'index.php?admin/manage_teacher_attendance_view/'.$data['timestamp'],'refresh');
}

关于php - 如何减少mysql、codeigniter数据的加载时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41216181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com