baeckerman83: MYSQL Derived Tabelle verhindern, wieso bei view wieder da?

Mhm ich hoffe ich könnt mir helfen. Also ich habe eine SQL Abfrage:

  
SELECT s.saison, s.id_liga, xml_id_heim as id, heim.name_de as name, gruppe as h_gruppe, coalesce(sum(if(tor_h>tor_g,3,(if(tor_h=tor_g,1,0)))),0) as punkte_h, sum(tor_h)-sum(tor_g) as tore_h, sum(tor_h) as tor_h, sum(tor_g) as gegentor_h, coalesce(sum(if(tor_h IS NOT NULL,1,0)),0) as spiele_h,  
	coalesce(sum(if(tor_h>tor_g,1,0)),0) as siege_h, coalesce(sum(if(tor_h=tor_g,1,0)),0) as unentschieden_h,coalesce(sum(if(tor_h<tor_g,1,0)),0) as niederlagen_h  
	FROM spiel s JOIN mannschaft heim on id_heim=heim.id_mannschaft LEFT JOIN tabelle_gruppen tg on (tg.id_mannschaft=s.id_heim and tg.id_liga=s.id_liga)  
	where spieltag_int is not null group by id_heim

Darauf mache ich ein Explain

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE s ALL Index_3_id_heim 2541 Using where; Using temporary; Using filesort
1 SIMPLE tg ref UNIQUE UNIQUE 4 fussball_db.s.id_heim 1
1 SIMPLE heim eq_ref PRIMARY PRIMARY 4 fussball_db.s.id_heim 1

Nun mache ich daraus eine VIEW und auf die View ein Explain, schwupps habe ich eine drived Tabelle, ist das richtig? Sollte ich die View dann besser weg lassen? Ich hatte gelesen derived die auftauchen wenn man ein explain macht sind schlecht.

id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL 112
2 DERIVED s ALL Index_3_id_heim 2541 Using where; Using temporary; Using filesort
2 DERIVED tg ref UNIQUE UNIQUE 4 fussball_db.s.id_heim 1
2 DERIVED heim eq_ref PRIMARY PRIMARY 4 fussball_db.s.id_heim 1

Was mache ich falsch? Oder ist das richtig so? Ich benutze diese Abfrage in einer Prozedur und versuche die zu optimieren. Sprich soll ich die view oder den direkten select aufruf in der Prozedur benutzen?