2017-08-12 3 views
0

Hier ist meine Tabelle:Wie kann ich den größten Wert erhalten?

-- log 
+----+---------+------------+ 
| id | user_id | seen | 
+----+---------+------------+ 
| 1 | 2342 | 1442664886 | 
| 2 | 3244 | 1442665851 | 
| 3 | 2342 | 1442711823 | 
| 4 | 7654 | 1442864219 | 
| 5 | 3244 | 1442954080 | 
| 6 | 9984 | 1442984716 | 
+----+---------+------------+ 

ich die größte gesehene Zeit für einen bestimmten Benutzer als letzten zu sehen bekommen. Ich kann durch diese beiden Abfragen tun:

erste Abfrage:

SELECT seen AS last_seen 
FROM log 
WHERE user_id = :id 
ORDER BY seen DESC 
LIMIT 1 

Zweite Abfrage:

SELECT MAX(seen) AS last_seen 
FROM log 
WHERE user_id = :id 

Nun welches ist der normale Weg? Soll ich mit welchem ​​gehen? Gibt es Unterschiede in der Leistung?

Antwort

2

Sie sind beide in Ordnung. Beide nutzen einen Index auf log(user_id, seen).

Die erste ist oft vorzuziehen, weil Sie die ganze Zeile ziehen und Informationen aus anderen Spalten abrufen können.

+0

nicht OP, aber wenn Sie mich fragen lassen, 'ORDER BY gesehen DESC 'würde die Bestellung Operation mehr Zeit als die Suche nach dem maximalen Wert? – Ali

+0

@Ali siehe das doppelte Thema für eine detaillierte Antwort. – Shadow

Verwandte Themen