Hallo wahsaga,
Ich rede doch von einem Subselect,
hehe, das hatte ich überlesen.
in Kombination mit ORDER BY und LIMIT 1 zur Auswahl des jeweils neuesten Zeitstempels pro Mannschaft
Drei Gründe, warum ich das für keine so gute Idee wie den Einsatz von MAX() halte:
1. Nicht so "intuitiv" wie MAX(), wie bereits Ilja anmerkte.
2. Nicht so portabel wie MAX().
Zwar endet die Portabilität von SQL-Anweisungen sehr schnell,
aber warum hier Insellösungen wie LIMIT verwenden, in T-SQL wäre
es z.B. TOP, wenn es eine Anweisung gibt, die praktisch alle
DBMS verstehen.
Wie schon gesagt, ich wollte keine Aussage darüber treffen, was da performanter ist - ich glaube allerdings nicht, dass MAX vs. ORDER BY/LIMIT 1 da einen signifikanten Unterschied macht.
3. Nicht so performant wie MAX().
dedlfix hat es mit Trockenschwimmen vermutet,
ich habe einfach EXPLAIN auf die Queries losgelassen:
Beide Queries liefern die gleichen Ergebnisse außer bei Extra:
MAX(): Using where
ORDER BY/LIMIT: Using where; using filesort
In der von mir verlinkten Doku zu EXPLAIN kannst Du im Abschnitt Extra nachlesen:
<zitat>
Using filesort
MySQL must do an extra pass to find out how to retrieve the rows in sorted order.
[...]
Using where:
[...]
If you want to make your queries as fast as possible, you should look out
for Extra values of Using filesort and Using temporary.
</zitat>
Von daher denke ich, dass die Kombination ORDER BY/LIMIT, auch wenn sie das gewünschte Ergebnis liefert, keine gute Idee ist.
Freundliche Grüße
Vinzenz