vendredi 10 août 2018

MySQL Performance SELECT Query

I have a MySQL Table with 78000 rows. I'm using GROUP_CONCAT(IF()) to make a pivot table, but it takes about 12 sec to load data. So how can I improve the SELECT query for a faster result? Many thanks!

       SELECT view.Name, view.Produkt, view.Datei,view.Produktinformation, view.SWLadeliste  
     ,GROUP_CONCAT(IF(view.VersionNr = '2.0.5',view.Informationen,NULL)) AS '2.0.5' ,GROUP_CONCAT(IF(view.VersionNr = '2.1.3',view.Informationen,NULL)) AS '2.1.3' ,GROUP_CONCAT(IF(view.VersionNr = '2.1.1',view.Informationen,NULL)) AS '2.1.1' ,GROUP_CONCAT(IF(view.VersionNr = '2.1.2',view.Informationen,NULL)) AS '2.1.2' ,GROUP_CONCAT(IF(view.VersionNr = '2.2.3',view.Informationen,NULL)) AS '2.2.3' ,GROUP_CONCAT(IF(view.VersionNr = '2.3.2',view.Informationen,NULL)) AS '2.3.2' 
FROM (( SELECT  table_name.ID, ge.Name  , rela_table_name.RDA_Produkt AS Produkt, table_name.Datei, infor.Beschreibung AS Produktinformation,rela_table_name.VersionNr, rela_table_name.Versionen_Projekt, rela_table_name.Informationen, table_name.SWLadeliste, rela_table_name.geplant, rela_table_name.ausgeliefert, rela_table_name.ggf_geplant, rela_table_name.zurueckgezogen,rela_table_name.Versionen_ID FROM spnversionsverwaltung.geräte as ge , spnversionsverwaltung.informationen as infor,spnversionsverwaltung.RDA_version_rela as rela_table_name,spnversionsverwaltung.RDA as table_name WHERE  table_name.Geräte_ID = ge.ID  and infor.ID = table_name.Informationen_ID and rela_table_name.RDA_ID = table_name.ID ORDER BY rela_table_name.Versionen_ID asc) 
 UNION ALL( SELECT  table_name.ID, ge.Name  , rela_table_name.Tools_Produkt AS Produkt, table_name.Datei, infor.Beschreibung AS Produktinformation,rela_table_name.VersionNr, rela_table_name.Versionen_Projekt, rela_table_name.Informationen, table_name.SWLadeliste, rela_table_name.geplant, rela_table_name.ausgeliefert, rela_table_name.ggf_geplant, rela_table_name.zurueckgezogen,rela_table_name.Versionen_ID FROM spnversionsverwaltung.geräte as ge , spnversionsverwaltung.informationen as infor,spnversionsverwaltung.Tools_version_rela as rela_table_name,spnversionsverwaltung.Tools as table_name WHERE  table_name.Geräte_ID = ge.ID  and infor.ID = table_name.Informationen_ID and rela_table_name.Tools_ID = table_name.ID ORDER BY rela_table_name.Versionen_ID asc)
 UNION ALL( SELECT  table_name.ID, ge.Name  , rela_table_name.Doku_Produkt AS Produkt, table_name.Datei, infor.Beschreibung AS Produktinformation,rela_table_name.VersionNr, rela_table_name.Versionen_Projekt, rela_table_name.Informationen, table_name.SWLadeliste, rela_table_name.geplant, rela_table_name.ausgeliefert, rela_table_name.ggf_geplant, rela_table_name.zurueckgezogen,rela_table_name.Versionen_ID FROM spnversionsverwaltung.geräte as ge , spnversionsverwaltung.informationen as infor,spnversionsverwaltung.Doku_version_rela as rela_table_name,spnversionsverwaltung.Doku as table_name WHERE  table_name.Geräte_ID = ge.ID  and infor.ID = table_name.Informationen_ID and rela_table_name.Doku_ID = table_name.ID ORDER BY rela_table_name.Versionen_ID asc)
 ) AS view  
 GROUP BY view.Produkt, view.Datei  
 ORDER BY view.Name asc, view.Produkt asc

Aucun commentaire:

Enregistrer un commentaire