Mysql 查询加载时间过长
Mysql query is taking too long to load
我在我的项目中使用 Codeigniter,在我的数据库表中有一些列具有 TEXT 数据类型。我意识到用 TEXT 数据类型加载这些列需要很长时间才能加载。
我的测试结果:
这些是 TEXT 数据类型列 - tc_status_1、tc_status_2、tc_status_3、tc_status_4、unconfirmation_status、tc_rejected_status、tc_restore_status、tc_confirmation_status
这是我的 CI 代码,它需要很长时间才能 运行 它甚至可能需要 20 多分钟才能 运行。
$this->db->select('application_id, tbl_application.first_name, tbl_application.middle_name, tbl_application.last_name, tbl_application.gender, admission_no, tbl_application.phone, tc_sent, tc_sent_1, tc_status_0, tc_status_1, tc_status_2, tc_status_3, tc_status_4, tc_application_status, tc_admission_status, is_confirmed, confirmation_status, confirmation_code, unconfirmation_status, tc_rejected_status, tc_restore_status, tc_confirmation_status, tc_verification_status, tc_transfer_status, programme_name, tc_code, form4_index, registration_status');
$this->db->from('tbl_application');
$this->db->join('tbl_academic_info', 'tbl_academic_info.applicant_id=application_id AND tbl_academic_info.status="0"');
$this->db->join('tbl_admission', 'tbl_admission.applicant_id=tbl_application.application_id AND tbl_admission.status="0"');
$this->db->join($this->db_name.'.tbl_programme', 'tbl_programme.programme_code=tbl_admission.program_of_study AND tbl_programme.status="0"');
$this->db->where('tbl_application.branch', $branch);
$this->db->where('tbl_application.academic_year', $entry_year);
$this->db->where('tbl_application.admission_status', '1');
$this->db->where('tbl_application.status', '0');
这段代码运行更快。
$this->db->select('application_id, tbl_application.first_name, tbl_application.middle_name, tbl_application.last_name, tbl_application.gender, admission_no, tbl_application.phone, tc_sent, tc_sent_1, tc_status_0, tc_application_status, tc_admission_status, is_confirmed, confirmation_status, confirmation_code, tc_verification_status, tc_transfer_status, programme_name, tc_code, form4_index, registration_status');
$this->db->from('tbl_application');
$this->db->join('tbl_academic_info', 'tbl_academic_info.applicant_id=application_id AND tbl_academic_info.status="0"');
$this->db->join('tbl_admission', 'tbl_admission.applicant_id=tbl_application.application_id AND tbl_admission.status="0"');
$this->db->join($this->db_name.'.tbl_programme', 'tbl_programme.programme_code=tbl_admission.program_of_study AND tbl_programme.status="0"');
$this->db->where('tbl_application.branch', $branch);
$this->db->where('tbl_application.academic_year', $entry_year);
$this->db->where('tbl_application.admission_status', '1');
$this->db->where('tbl_application.status', '0');
求推荐!我该如何处理才能让我的代码 运行 更快...
- 使用索引
- 根据您的代码,您似乎正在填充项目列表,添加视图详细信息 button/link 以获取应用程序的详细信息。仅获取列表的 非常必要 列。当用户点击 查看详细信息 并使用新查询时,可以显示其他 TEXT 数据。新查询将只获取 1 个应用程序的所有文本,而不是所有列表的所有文本
- 重新考虑你的数据库设计,对于我认为是叙述的所有状态,创建一个新的table,使用应用程序
的外键
我在我的项目中使用 Codeigniter,在我的数据库表中有一些列具有 TEXT 数据类型。我意识到用 TEXT 数据类型加载这些列需要很长时间才能加载。
我的测试结果: 这些是 TEXT 数据类型列 - tc_status_1、tc_status_2、tc_status_3、tc_status_4、unconfirmation_status、tc_rejected_status、tc_restore_status、tc_confirmation_status
这是我的 CI 代码,它需要很长时间才能 运行 它甚至可能需要 20 多分钟才能 运行。
$this->db->select('application_id, tbl_application.first_name, tbl_application.middle_name, tbl_application.last_name, tbl_application.gender, admission_no, tbl_application.phone, tc_sent, tc_sent_1, tc_status_0, tc_status_1, tc_status_2, tc_status_3, tc_status_4, tc_application_status, tc_admission_status, is_confirmed, confirmation_status, confirmation_code, unconfirmation_status, tc_rejected_status, tc_restore_status, tc_confirmation_status, tc_verification_status, tc_transfer_status, programme_name, tc_code, form4_index, registration_status');
$this->db->from('tbl_application');
$this->db->join('tbl_academic_info', 'tbl_academic_info.applicant_id=application_id AND tbl_academic_info.status="0"');
$this->db->join('tbl_admission', 'tbl_admission.applicant_id=tbl_application.application_id AND tbl_admission.status="0"');
$this->db->join($this->db_name.'.tbl_programme', 'tbl_programme.programme_code=tbl_admission.program_of_study AND tbl_programme.status="0"');
$this->db->where('tbl_application.branch', $branch);
$this->db->where('tbl_application.academic_year', $entry_year);
$this->db->where('tbl_application.admission_status', '1');
$this->db->where('tbl_application.status', '0');
这段代码运行更快。
$this->db->select('application_id, tbl_application.first_name, tbl_application.middle_name, tbl_application.last_name, tbl_application.gender, admission_no, tbl_application.phone, tc_sent, tc_sent_1, tc_status_0, tc_application_status, tc_admission_status, is_confirmed, confirmation_status, confirmation_code, tc_verification_status, tc_transfer_status, programme_name, tc_code, form4_index, registration_status');
$this->db->from('tbl_application');
$this->db->join('tbl_academic_info', 'tbl_academic_info.applicant_id=application_id AND tbl_academic_info.status="0"');
$this->db->join('tbl_admission', 'tbl_admission.applicant_id=tbl_application.application_id AND tbl_admission.status="0"');
$this->db->join($this->db_name.'.tbl_programme', 'tbl_programme.programme_code=tbl_admission.program_of_study AND tbl_programme.status="0"');
$this->db->where('tbl_application.branch', $branch);
$this->db->where('tbl_application.academic_year', $entry_year);
$this->db->where('tbl_application.admission_status', '1');
$this->db->where('tbl_application.status', '0');
求推荐!我该如何处理才能让我的代码 运行 更快...
- 使用索引
- 根据您的代码,您似乎正在填充项目列表,添加视图详细信息 button/link 以获取应用程序的详细信息。仅获取列表的 非常必要 列。当用户点击 查看详细信息 并使用新查询时,可以显示其他 TEXT 数据。新查询将只获取 1 个应用程序的所有文本,而不是所有列表的所有文本
- 重新考虑你的数据库设计,对于我认为是叙述的所有状态,创建一个新的table,使用应用程序 的外键