MYSQL: медленный запрос после увеличения данных - PullRequest
0 голосов
/ 20 мая 2018

У меня длинный запрос, и результат занимает много времени.Это может занять от 15 до 20 секунд.При небольшом объеме данных запрос выглядит нормально, и я проверил все индексы и все, что уже использует индекс или условие условия.

Извините, я не публикую реальные запросы, потому что их так много и они связаны сдругие таблицы.

Кто-нибудь может помочь?Если вам нужна дополнительная информация, дайте мне знать.

Ниже приводится ОБЪЯСНЕНИЕ от mysql.

1   PRIMARY <derived2>  ALL NULL    NULL    NULL    NULL    210326  
2   DERIVED PQL ref practice_place_id,patient_id,practice_place_id_2,encounter_id,practice_place_id_3,for_comission for_comission   4   const   38950   Using where; Using index; Using temporary; Using filesort   
2   DERIVED EN  eq_ref  PRIMARY,id,practice_id,practice_id_2,practice_id_3  PRIMARY 8   PQL.encounter_id,const  1   Using index 
2   DERIVED PIH ref PRIMARY,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8    practice_id_3   12  const,EN.id 1   Using index condition; Using where  
2   DERIVED RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PQL.patient_id    1       
2   DERIVED PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   timestamp   12  PIH.timestamp,const 1   Using where 
2   DERIVED RV  eq_ref  PRIMARY PRIMARY 4   PID.item_id 1       
2   DERIVED RRV eq_ref  PRIMARY,parent_id   PRIMARY 8   PID.item_id,PID.item_sub_id 1   Using index 
2   DERIVED D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id   1   Using where 
2   DERIVED RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PIH.timestamp   1   Using where 
2   DERIVED PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
2   DERIVED TL  ref reff_id reff_id 12  PIH.timestamp,const 1   Using where 
3   UNION   PQL ref practice_place_id,patient_id,practice_place_id_2,encounter_id,practice_place_id_3,for_comission for_comission   4   const   38950   Using where; Using index; Using temporary; Using filesort   
3   UNION   EN  eq_ref  PRIMARY,id,practice_id,practice_id_2,practice_id_3  PRIMARY 8   PQL.encounter_id,const  1   Using index 
3   UNION   PIH ref PRIMARY,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8    practice_id_3   12  const,EN.id 1   Using index condition; Using where  
3   UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PQL.patient_id    1       
3   UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   timestamp   12  PIH.timestamp,const 1   Using where 
3   UNION   RV  eq_ref  PRIMARY PRIMARY 4   PID.item_id 1       
3   UNION   RRV eq_ref  PRIMARY,parent_id   PRIMARY 8   PID.item_id,PID.item_sub_id 1   Using index 
3   UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id_2 1   Using where 
3   UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PIH.timestamp   1   Using where 
3   UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
3   UNION   TL  ref reff_id reff_id 12  PIH.timestamp,const 1   Using where 
4   UNION   PQL ref practice_place_id,patient_id,practice_place_id_2,encounter_id,practice_place_id_3,for_comission for_comission   4   const   38950   Using where; Using index; Using temporary; Using filesort   
4   UNION   EN  eq_ref  PRIMARY,id,practice_id,practice_id_2,practice_id_3  PRIMARY 8   PQL.encounter_id,const  1   Using index 
4   UNION   PIH ref PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 practice_id_3   12  const,EN.id 1   Using index condition; Using where  
4   UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PQL.patient_id    1       
4   UNION   TL  ref reff_id reff_id 12  PIH.timestamp,const 1   Using where 
4   UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   timestamp   12  PIH.timestamp,const 1   Using where 
4   UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PIH.timestamp   1   Using where 
4   UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
4   UNION   REF eq_ref  PRIMARY,practice_id,type,id,practice_id_3,id_2  PRIMARY 5   PID.item_id,PID.item_type   1   Using where 
4   UNION   DF  eq_ref  PRIMARY PRIMARY 2   REF.form    1   Using where 
4   UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id   1   Using where 
5   UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   practice_id_3   5   const,const 6533    Using index condition; Using where; Using temporary; Using filesort 
5   UNION   REF eq_ref  PRIMARY,practice_id,id,practice_id_2    PRIMARY 4   PID.item_id 1   Using where 
5   UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id   1   Using where 
5   UNION   PIH eq_ref  PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 PRIMARY 12  PID.timestamp,const 1   Using where 
5   UNION   PQL ref practice_place_id,patient_id,practice_place_id_2,encounter_id,practice_place_id_3,for_comission practice_place_id_2 9   const,PIH.reff_id   1   Using index condition; Using where  
5   UNION   EN  eq_ref  PRIMARY,id,practice_id,practice_id_2,practice_id_3  PRIMARY 8   PIH.reff_id,const   1   Using where; Using index    
5   UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PQL.patient_id    1       
5   UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PID.timestamp   1   Using where 
5   UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
5   UNION   TL  ref reff_id reff_id 12  PID.timestamp,const 1   Using where 
6   UNION   PIH ref PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 practice_id_8   5   const,const 10522   Using index condition; Using temporary; Using filesort  
6   UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   timestamp   12  PIH.timestamp,const 1   Using where 
6   UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id   1   Using where 
6   UNION   REF eq_ref  PRIMARY,practice_id,type,id,practice_id_3,id_2  PRIMARY 5   PID.item_id,PID.item_type   1   Using where 
6   UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PIH.timestamp   1   Using where 
6   UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
6   UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PIH.reff_id   1   Using where 
6   UNION   TL  ref reff_id reff_id 12  PIH.timestamp,const 1   Using where 
7   UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   practice_id_3   5   const,const 6533    Using index condition; Using where; Using temporary; Using filesort 
7   UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PID.timestamp   1   Using where 
7   UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
7   UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id   1   Using where 
7   UNION   REF eq_ref  PRIMARY,practice_id,id,practice_id_2    PRIMARY 4   PID.item_id 1   Using where 
7   UNION   PIH eq_ref  PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 PRIMARY 12  PID.timestamp,const 1   Using where 
7   UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PIH.reff_id   1   Using where 
7   UNION   TL  ref reff_id reff_id 12  PID.timestamp,const 1   Using where 
8   UNION   PQL ref practice_place_id,patient_id,practice_place_id_2,encounter_id,practice_place_id_3,for_comission for_comission   4   const   38950   Using where; Using index; Using temporary; Using filesort   
8   UNION   EN  eq_ref  PRIMARY,id,practice_id,practice_id_2,practice_id_3  PRIMARY 8   PQL.encounter_id,const  1   Using index 
8   UNION   PIH ref PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 practice_id_3   12  const,EN.id 1   Using index condition; Using where  
8   UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PQL.patient_id    1       
8   UNION   TL  ref reff_id reff_id 12  PIH.timestamp,const 1   Using where 
8   UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   timestamp   12  PIH.timestamp,const 1   Using where 
8   UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PIH.timestamp   1   Using where 
8   UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
8   UNION   REF eq_ref  PRIMARY,practice_id,type,id,practice_id_3,id_2  PRIMARY 5   PID.item_id,PID.item_type   1   Using where 
8   UNION   DF  eq_ref  PRIMARY PRIMARY 2   REF.form    1   Using where 
8   UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id_2 1   Using where 
9   UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   practice_id_3   5   const,const 6533    Using index condition; Using where; Using temporary; Using filesort 
9   UNION   REF eq_ref  PRIMARY,practice_id,id,practice_id_2    PRIMARY 4   PID.item_id 1   Using where 
9   UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id_2 1   Using where 
9   UNION   PIH eq_ref  PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 PRIMARY 12  PID.timestamp,const 1   Using where 
9   UNION   PQL ref practice_place_id,patient_id,practice_place_id_2,encounter_id,practice_place_id_3,for_comission practice_place_id_2 9   const,PIH.reff_id   1   Using index condition; Using where  
9   UNION   EN  eq_ref  PRIMARY,id,practice_id,practice_id_2,practice_id_3  PRIMARY 8   PIH.reff_id,const   1   Using where; Using index    
9   UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PQL.patient_id    1       
9   UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PID.timestamp   1   Using where 
9   UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
9   UNION   TL  ref reff_id reff_id 12  PID.timestamp,const 1   Using where 
10  UNION   PIH ref PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 practice_id_8   5   const,const 10522   Using index condition; Using temporary; Using filesort  
10  UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   timestamp   12  PIH.timestamp,const 1   Using where 
10  UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id_2 1   Using where 
10  UNION   REF eq_ref  PRIMARY,practice_id,type,id,practice_id_3,id_2  PRIMARY 5   PID.item_id,PID.item_type   1   Using where 
10  UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PIH.timestamp   1   Using where 
10  UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
10  UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PIH.reff_id   1   Using where 
10  UNION   TL  ref reff_id reff_id 12  PIH.timestamp,const 1   Using where 
11  UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   practice_id_3   5   const,const 6533    Using index condition; Using where; Using temporary; Using filesort 
11  UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PID.timestamp   1   Using where 
11  UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
11  UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id_2 1   Using where 
11  UNION   REF eq_ref  PRIMARY,practice_id,id,practice_id_2    PRIMARY 4   PID.item_id 1   Using where 
11  UNION   PIH eq_ref  PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 PRIMARY 12  PID.timestamp,const 1   Using where 
11  UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PIH.reff_id   1   Using where 
11  UNION   TL  ref reff_id reff_id 12  PID.timestamp,const 1   Using where 
12  UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   practice_id_3   5   const,const 525 Using index condition; Using where; Using temporary; Using filesort 
12  UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id   1   Using where 
12  UNION   PIH eq_ref  PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 PRIMARY 12  PID.timestamp,const 1   Using where 

12  UNION   PQL ref practice_place_id,patient_id,practice_place_id_2,encounter_id,practice_place_id_3,for_comission practice_place_id_2 9   const,PIH.reff_id   1   Using index condition; Using where  
12  UNION   EN  eq_ref  PRIMARY,id,practice_id,practice_id_2,practice_id_3  PRIMARY 8   PIH.reff_id,const   1   Using where; Using index    
12  UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PQL.patient_id    1       
12  UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PID.timestamp   1   Using where 
12  UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
12  UNION   TL  ref reff_id reff_id 12  PID.timestamp,const 1   Using where 
12  UNION   PLD ref PRIMARY,practice_id practice_id 8   const,PID.item_id   3   Using index 
12  UNION   PLI eq_ref  PRIMARY,id  PRIMARY 4   PLD.lab_item_id 1   Using index 
12  UNION   PLC eq_ref  PRIMARY PRIMARY 4   PLD.lab_cat_id  1       
13  UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   practice_id_3   5   const,const 525 Using index condition; Using where; Using temporary; Using filesort 
13  UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id   1   Using where 
13  UNION   PIH eq_ref  PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 PRIMARY 12  PID.timestamp,const 1   Using where 
13  UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PIH.reff_id   1   Using where 
13  UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PID.timestamp   1   Using where 
13  UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
13  UNION   TL  ref reff_id reff_id 12  PID.timestamp,const 1   Using where 
13  UNION   PLD ref PRIMARY,practice_id PRIMARY 4   PID.item_id 4   Using where 
13  UNION   PLI eq_ref  PRIMARY,id  PRIMARY 4   PLD.lab_item_id 1   Using index 
13  UNION   PLC eq_ref  PRIMARY PRIMARY 4   PLD.lab_cat_id  1       
14  UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   practice_id_3   5   const,const 525 Using index condition; Using where; Using temporary; Using filesort 
14  UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id_2 1   Using where 
14  UNION   PIH eq_ref  PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 PRIMARY 12  PID.timestamp,const 1   Using where 
14  UNION   PQL ref practice_place_id,patient_id,practice_place_id_2,encounter_id,practice_place_id_3,for_comission practice_place_id_2 9   const,PIH.reff_id   1   Using index condition; Using where  
14  UNION   EN  eq_ref  PRIMARY,id,practice_id,practice_id_2,practice_id_3  PRIMARY 8   PIH.reff_id,const   1   Using where; Using index    
14  UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PQL.patient_id    1       
14  UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PID.timestamp   1   Using where 
14  UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
14  UNION   TL  ref reff_id reff_id 12  PID.timestamp,const 1   Using where 
14  UNION   PLD ref PRIMARY,practice_id practice_id 8   const,PID.item_id   3   Using index 
14  UNION   PLI eq_ref  PRIMARY,id  PRIMARY 4   PLD.lab_item_id 1   Using index 
14  UNION   PLC eq_ref  PRIMARY PRIMARY 4   PLD.lab_cat_id  1       
15  UNION   PID ref item_type,timestamp,practice_id,item_id_2,timestamp_2,practice_id_2,practice_id_3   practice_id_3   5   const,const 525 Using index condition; Using where; Using temporary; Using filesort 
15  UNION   D   ref doc_id,pp_id,id_2,pp_doc    doc_id  4   PID.doctor_id_2 1   Using where 
15  UNION   PIH eq_ref  PRIMARY,source,reff_id,practice_id,timestamp,is_active,practice_id_3,cal_id,practice_id_5,practice_id_6,practice_id_2,practice_id_4,practice_id_7,practice_id_8 PRIMARY 12  PID.timestamp,const 1   Using where 
15  UNION   RPP eq_ref  PRIMARY,patient_id,practice_id,practice_id_2    PRIMARY 8   const,PIH.reff_id   1   Using where 
15  UNION   RPIP    ref timestamp,practice_id,timestamp_2,refunded  timestamp   8   PID.timestamp   1   Using where 
15  UNION   PIC ref practice_id,prc_invoice_detail_id,claim_status,practice_id_2,practice_id_3,practice_id_4,practice_id_5  practice_id 4   const   1   Using where 
15  UNION   TL  ref reff_id reff_id 12  PID.timestamp,const 1   Using where 
15  UNION   PLD ref PRIMARY,practice_id PRIMARY 4   PID.item_id 4   Using where 
15  UNION   PLI eq_ref  PRIMARY,id  PRIMARY 4   PLD.lab_item_id 1   Using index 
15  UNION   PLC eq_ref  PRIMARY PRIMARY 4   PLD.lab_cat_id  1       

1 Ответ

0 голосов
/ 24 мая 2018

"Я проверил все индексы и все, что уже использует индекс или условие".- недостаточно хорошо.

Using index condition может означать, что «составной» индекс поможет.Давайте посмотрим некоторые из SHOW CREATE TABLEs.

Давайте посмотрим one из 8 таблиц UNIONs.

Какую версию вы используете?Более старые версии делают ужасную работу с несколькими «производными» таблицами - потому что индексов нет.

Действительно ли результирующий набор содержит 210К строк?Или есть LIMIT, которого мы не видим?

...