Struppi: Explain (me ;-) )

Beitrag lesen

Dann würde ich sagen, ich brauche die 2. Variante. Ich will alle Resultate aus t und nur die Suchergebnisse bzw. max() aus m
Meinst Du damit jetzt das t.* oder meinst Du alle _Datensätze_ aus t und nur die mit der Join-Bedingung übereinstimmenden Datensätze aus m? Im letzem Fall _musst_ Du "t LEFT JOIN m" verwenden oder "m RIGHT JOIN t". Diese beiden Varianten könntest Du mit EXPLAIN testen.

Ohje, mir ist diese Ausdrucksweise nicht so geläufig, ich muss erstmal nachdenken:

Also ich brauch alle t.* auf die die WHERE Bedingung zutrifft und zusätzlich die MAX und COUNT werte aus m. die mit der Joinbedingung übereinstimmen.

Ob LEFT Oder R'IGHT macht keinen Unterschied.

ist die Zeile rows wieder bei 86 und da m die größere Tabelle werden wird. scheint mir es sinnvoll auf t zu joinen (sagt man das so?)
Lies: http://dev.mysql.com/doc/mysql/en/explain.html. Dort steht die Bedeutung der EXPLAIN-Ausgaben. Wichtigstes Kriterium für JOINs ist der type. Hier ist eq_ref optimal. Bei einem OUTER JOIN ist die Kombination: eine Tabelle typ eq_ref, die andere Tabelle typ index, faktisch nicht zu überbieten. Zweites Kriterium ist, ob und welche Indizes genutzt werden. Dann erst kann geschaut werden, wieviele Zeilen _wahrscheinlich_ betrachtet werden müssen.

Die Seite hatte ich schon gelesen. Ist aber natürlich schwer zu verstehen wenn man die Begriffe nicht alle kennt.

Mich hatte interesert was das wichtigste an der Ausgabe von EXPLAIN ist. Und jetzt hab ich's endlich erklärt bekommen, danke.

Ich hab als Ergebnis nur zwei 'ref' aber ich vermute mal das geht nicht besser.

Struppi.