Ragazzi eseguo la seguente query ma spesso è lenta....
sapreste darmi qualche consiglio su come ottimizzarla ???
meglio inserire indici ???? dove ???
SELECT tb_pianifica.*,tb_grpwbs.id AS n_gruppo,tb_grpwbs.id_collega AS collega,tb_grpwbs.id_status AS status_gruppo,
(CASE WHEN tb_pianifica.dt_steering <> '0000-00-00' THEN REPLACE(DATE_FORMAT(dt_steering,GET_FORMAT(DATE,'E UR')),'.','/') ELSE ' ' END) AS data_ste,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN tb_grpwbs.wbs ELSE tb_pianifica.wbs END)AS wbs,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN tb_npp.codice ELSE tb_npp.codice END)AS cod_npp,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN tb_pm.nome ELSE tb_pm.nome END)AS nome_pm,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN tb_st.descrizione ELSE tb_st.descrizione END)AS desc_st,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN tb_spec.descrizione ELSE tb_spec.descrizione END)AS desc_spec,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN tb_grpwbs.notes ELSE tb_pianifica.notes END)AS notes,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN SUM(tb_pianifica.budget) ELSE tb_pianifica.budget END)AS budget,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN SUM(tb_pianifica.pianificato) ELSE tb_pianifica.pianificato END)AS pianificato,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN SUM(tb_pianifica.cap13) ELSE tb_pianifica.cap13 END)AS cap13,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN SUM(tb_pianifica.cap15) ELSE tb_pianifica.cap15 END)AS cap15,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN SUM(tb_pianifica.cap16) ELSE tb_pianifica.cap16 END)AS cap16,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN SUM(tb_pianifica.capaltri) ELSE tb_pianifica.cap16 END)AS capaltri,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN SUM(tb_pianifica.cap13+tb_pianifica.cap15+tb_piani fica.cap16+tb_pianifica.capaltri) ELSE tb_pianifica.cap13+tb_pianifica.cap15+tb_pianifica .cap16+tb_pianifica.capaltri END)AS tot_eff_a_c,
(CASE WHEN tb_pianifica.id_grpwbs <> '0' AND tb_grpwbs.id_collega='1' AND tb_grpwbs.id_status='1' THEN SUM(tb_pianifica.budget-tb_pianifica.eff_tot-tb_pianifica.cons_prev_dich+ tb_pianifica.cap13+tb_pianifica.cap15+tb_pianifica .cap16+tb_pianifica.capaltri) ELSE tb_pianifica.budget-tb_pianifica.eff_tot-tb_pianifica.cons_prev_dich+ tb_pianifica.cap13+tb_pianifica.cap15+tb_pianifica .cap16+tb_pianifica.capaltri END)AS residuo_f_a
FROM tb_pianifica
LEFT JOIN tb_grpwbs ON tb_grpwbs.id = tb_pianifica.id_grpwbs
LEFT JOIN tb_npp ON tb_pianifica.id_npp = tb_npp.id
LEFT JOIN tb_pm ON tb_pianifica.id_pm = tb_pm.id
LEFT JOIN tb_st ON tb_pianifica.id_sog_tec = tb_st.id
LEFT JOIN tb_spec ON tb_pianifica.id_spec = tb_spec.id
GROUP BY wbs
ORDER BY tb_pianifica.id_grpwbs DESC