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

标签 php mysql codeigniter

我有大约 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/

相关文章:

php - 需要一些使用 MySQL 的 Android 和 iOS 应用程序的初步指导

mysql - Django MySQL 添加外键

mysql - 如何在codeigniter中的jquery数据表中执行mysql NOT IN操作?

javascript - 使用 Angular $post 和 PHP Codeigniter 请求和响应

php - 在数组中存储大量数据的最佳方法是什么?

php - 用 PHP 模拟发牌卡

php - 使用 LIKE 和 WHERE 的 SQL 查询内部连接

php - 上传excel文件Laravel

php - shell_exec 的输出被截断为 100 个字符

php - 什么设置(ab)使用node.js作为超快速轮询和ajax服务器来更新数据库(类似于Google Spreadsheet方法)