Vinzenz Mai: MySQL - Query Statement gesucht

Beitrag lesen

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