爲什麼我的查詢需要大約2分鐘的時間來處理?查詢加入緩慢
我需要從8表中取屬性。
我該如何加入這些表並使其成爲快速查詢?
爲什麼我要加入這些表的原因是bacause我從用戶輸入progCode
要使用fetchall(PDO :: FETCH_ASSOC)這是我的查詢:
"SELECT DISTINCT a.`ProgCode`, a.`Program`
FROM (select `i`.`name` AS `LC`,`f`.`name` AS `Intake`,`a`.`student_id`
AS `student_id`,`b`.`matricNo`
AS `matricNo`,`b`.`name`
AS `Nama`,`a`.`sem_id`
AS `sem_id`,`c`.`name`
AS `Sessi`,`e`.`code`
AS `ProgCode`,`e`.`name`
AS `Program`,`a`.`sub_id`
AS `sub_id`,`d`.`code`
AS `SubCode`,`d`.`name`
AS `Subject`,`a`.`grade`
AS `grade`,`h`.`credit`
AS `CurrentCreditHour`,`g`.`totalcredit`
AS `TotalCreditHour`,`g`.`gpa`
AS `GPA`,`g`.`cgpa`
AS `CGPA` from ((((((((`admin_sub_mark` `a` join `enrl_student` `b`)
join `struc_session` `c`)
join `struc_session` `f`)
join `struc_subject` `d`)
join `struc_program` `e`)
join `admin_sem_wise_cgpa` `g`)
join `admin_sem_wise_gpa` `h`)
join `struc_learningcentre` `i`)
where ((`b`.`id` = `a`.`student_id`)
and (`d`.`id` = `a`.`sub_id`)
and (`c`.`id` = `a`.`sem_id`)
and (`e`.`id` = `b`.`program_id`)
and (`f`.`id` = `b`.`intake_id`)
and (`i`.`id` = `b`.`learningCenter_id`)
and (`a`.`student_id` = `g`.`student_id`)
and (`a`.`sem_id` = `g`.`sem_id`)
and (`h`.`student_id` = `g`.`student_id`)
and (`h`.`sem_id` = `g`.`sem_id`)) order by `b`.`name`) a
ORDER BY `Program` ASC"
,這是我的解釋查詢:
id | select_type |表| |鍵入| possible_keys |鍵| key_len | ref |行| Extra
1 | SIMPLE | g | ALL | NULL | NULL | NULL | NULL | 6049 |使用臨時; 使用文件排序
1 | SIMPLE | h | ALL | NULL | NULL | NULL | NULL | 6055 |使用where |
1 | SIMPLE | c | eq_ref | PRIMARY | PRIMARY | 257 | educate_aeu2.g.sem_id 1
1 | SIMPLE | b | eq_ref | PRIMARY | PRIMARY | 257 | educate_aeu2.h.student_id 1使用其中
1 | SIMPLE | f | eq_ref | PRIMARY | PRIMARY | 257 | educate_aeu2.b.intake_id 1
1 | SIMPLE | e | eq_ref | PRIMARY | PRIMARY | 257 | educate_aeu2.b.program_id 1
1 | SIMPLE |我| eq_ref | PRIMARY | PRIMARY | 257 | educate_aeu2.b.learningCenter_id 1
1 | SIMPLE | a | ALL | NULL | NULL | NULL | NULL | 17077 |使用位置
1 | SIMPLE | d | eq_ref | PRIMARY | PRIMARY | 257 | educate_aeu2.a.sub_id 1
通過對查詢執行EXPLAIN並查看哪些索引正在被使用 –
使用索引的適當字段... – user1844933
MySQL可以''EXPLAIN'和'解釋擴展'您的查詢比我們能夠更好,因爲MySQL已經知道模式的外觀如何 –