Mailinglisten-Archive |
Hallo Michael, erstmal danke fuer deine Tipps. >Keine Ahnung, sinnvoll waere es mal die Explains fuer beide Varianten zu >posten. (Bitte achte dann dabei auf den Zeilenumbruch deines Mailers >damit kein Zeilensalat entsteht, denn Salat essen ist bei diesen hohen >Temperaturen gefaehrlich :) ). Variante 1 mit zuerst b_links und dann a_links (Dauer 0,03x sek.): table type key key_len ref rows Extra ------------------------------------------------------------------------ syst_sites ALL NULL NULL NULL 9 Using temp. b_links ref in_link_sitestatus 1 syst_sites.site_id 11 a_links ref in_link_sitestatus 1 syst_sites.site_id 11 ------------------------------------------------------------------------ Variante 2 mit zuerst a_links und dann b_links (Dauer 3,x sek.): table type key key_len ref rows Extra ------------------------------------------------------------------------ syst_sites ALL NULL NULL NULL 9 Using temp. a_links ref in_link_sitestatus 1 syst_sites.site_id 11 b_links ref in_link_sitestatus 1 syst_sites.site_id 11 ------------------------------------------------------------------------ Die possible_keys fuer b_links und a_links sind in beiden Varianten jeweils un_link_url, fk_link_site und in_link_sitestatus. Beim Explain gibt es also kaum einen Unterschied, bei der Laufzeit allerdings schon. >Ein ANALYZE Table waere vorher evtl sinnvoll, so dass MySql ueber die >Verteilung der Schluesselwerte in den Tabellen besser bescheid weiss. Danke fuer den Tipp. Habe ich gemacht, hat aber nichts gebracht. :-( >Jo, ein count gibt die Anzahl der Werte innerhalb der angegebenen >Gruppierung wieder, dabei ist es eigentlich Egal welche Spalte man >nimmt, da >auch NULL Werte gezaehlt werden. Statt dessen kann man z.B. >SUM(IF(Spalte is >Null,0,1)) verwenden um die Anzahl der Werte in einer Spalte zu zaehlen >die nicht NULL sind. Ein Test mit SUM(IF(a_links.link_id IS NULL, 0, 1)) und SUM(IF(b_links.link_id IS NULL, 0, 1)) statt der beiden COUNTs bringt die selben Ergebnisse. Ich habe das Gefuehl, dass das FIND_IN_SET('neu', b_links.link_status) irgendwie nicht richtig verwendet wird. Daran, dass ich zwei LEFT JOINs auf die gleiche Tabelle mache, kann es auch nicht liegen, oder? Bin fuer alle weiteren Tipps und Hilfen sehr dankbar. Gruss, Ralf -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive