-- 预约表索引优化 -- 用于提升预约列表查询性能 -- 1. 预约表 (zyt_appointment) 索引 -- 主要查询字段:doctor_id, patient_id, status, appointment_date, appointment_time -- 医生ID索引(医生角色查询自己的预约) ALTER TABLE `zyt_appointment` ADD INDEX `idx_doctor_id` (`doctor_id`); -- 患者ID索引(关联查询) ALTER TABLE `zyt_appointment` ADD INDEX `idx_patient_id` (`patient_id`); -- 状态索引(状态筛选) ALTER TABLE `zyt_appointment` ADD INDEX `idx_status` (`status`); -- 预约日期索引(日期范围查询) ALTER TABLE `zyt_appointment` ADD INDEX `idx_appointment_date` (`appointment_date`); -- 组合索引:状态+日期+时间(用于排序和筛选) ALTER TABLE `zyt_appointment` ADD INDEX `idx_status_date_time` (`status`, `appointment_date`, `appointment_time`); -- 组合索引:医生+状态+日期(医生角色常用查询) ALTER TABLE `zyt_appointment` ADD INDEX `idx_doctor_status_date` (`doctor_id`, `status`, `appointment_date`); -- 2. 诊断表 (zyt_tcm_diagnosis) 索引 -- 主要查询字段:patient_name, assistant_id -- 患者姓名索引(模糊搜索,使用前缀索引) ALTER TABLE `zyt_tcm_diagnosis` ADD INDEX `idx_patient_name` (`patient_name`(20)); -- 医助ID索引(医助角色查询) ALTER TABLE `zyt_tcm_diagnosis` ADD INDEX `idx_assistant_id` (`assistant_id`); -- 3. 管理员表 (zyt_admin) 索引 -- 主要查询字段:name(医生姓名搜索) -- 管理员姓名索引(模糊搜索,使用前缀索引) ALTER TABLE `zyt_admin` ADD INDEX `idx_name` (`name`(20)); -- 4. 诊断查看记录表 (zyt_diagnosis_view_records) 索引 -- 主要查询字段:diagnosis_id, is_confirmed, delete_time -- 组合索引:诊断ID+确认状态+删除时间(用于确认诊单查询) ALTER TABLE `zyt_diagnosis_view_records` ADD INDEX `idx_diagnosis_confirmed` (`diagnosis_id`, `is_confirmed`, `delete_time`); -- 5. 处方表 (zyt_prescription) 索引 -- 主要查询字段:diagnosis_id, delete_time -- 组合索引:诊断ID+删除时间(用于开方状态查询) ALTER TABLE `zyt_prescription` ADD INDEX `idx_diagnosis_delete` (`diagnosis_id`, `delete_time`); -- 6. 管理员角色表 (zyt_admin_role) 索引 -- 主要查询字段:admin_id, role_id -- 组合索引:管理员ID+角色ID(用于权限判断) ALTER TABLE `zyt_admin_role` ADD INDEX `idx_admin_role` (`admin_id`, `role_id`); -- ============================================ -- 查看已创建的索引 -- ============================================ -- SHOW INDEX FROM `zyt_appointment`; -- SHOW INDEX FROM `zyt_tcm_diagnosis`; -- SHOW INDEX FROM `zyt_admin`; -- SHOW INDEX FROM `zyt_diagnosis_view_records`; -- SHOW INDEX FROM `zyt_prescription`; -- SHOW INDEX FROM `zyt_admin_role`; -- ============================================ -- 如果索引已存在,先删除再创建(可选) -- ============================================ -- ALTER TABLE `zyt_appointment` DROP INDEX `idx_doctor_id`; -- ALTER TABLE `zyt_appointment` DROP INDEX `idx_patient_id`; -- ALTER TABLE `zyt_appointment` DROP INDEX `idx_status`; -- ALTER TABLE `zyt_appointment` DROP INDEX `idx_appointment_date`; -- ALTER TABLE `zyt_appointment` DROP INDEX `idx_status_date_time`; -- ALTER TABLE `zyt_appointment` DROP INDEX `idx_doctor_status_date`;