Ich habe eine Tabelle verwenden, die wie folgt aussieht:Auswahl des letzten Eintrags (Zeile) Datetime-Spalte
table_name | event_time | row_count | num_of_times_observed
test | 2016-11-30 15:33:47 | 200 | 0
test | 2016-11-30 16:03:03 | 400 | 0
test11 | 2016-11-30 15:33:34 | 300 | 0
test11 | 2016-11-30 15:57:49 | 400 | 0
Ich mag die Zeile finden, die den aktuellsten Wert in event_time
einen Tabellennamen gegeben hat (oder allgemeiner, durch jeden eindeutigen Tabellennamen). Zum Beispiel, wenn wir die letzte Zeit für table_name
‚test11‘ zu finden sind, würden wir ein Ergebnis wie folgt erhalten:
table_name | event_time | row_count | num_of_times_observed
test11 | 2016-11-30 15:57:49 | 400 | 0
Es gibt zwei Standards (Anfänger) Ansätze, die ich mich vorstellen kann zu erreichen dass:
SELECT table_name -- Approach#1
,event_time
,row_count
,num_of_times_observed
FROM my_table AS u
WHERE table_name = 'test11'
ORDER BY event_time DESC LIMIT 1
Oder diese:
SELECT table_name -- Approach#2
,event_time
,row_count
,num_of_times_observed
FROM (
SELECT *
FROM my_table
WHERE table_name = 'test11'
) AS u -- I really don't need to filter by table_name here, but I hope it will improve the performance by just a little (especially if there are >100K rows for 'test11')?
INNER JOIN (
SELECT table_name
,max(event_time) AS event_time
FROM my_table
GROUP BY table_name
HAVING table_name = 'test11'
) AS q ON u.table_name = q.table_name
AND u.event_time = q.event_time
Angenommen, es sind ca. 100 Millionen Zeilen in my_table
, ich wie die oben genannten Ansätze fühlen sich nicht sehr effizient sein (opt imitiert). Ich habe StackOverflow nach möglichen Antworten durchforstet und Antworten wie this one gefunden, die fortgeschrittener sind. Ich frage mich, ob es bessere (effiziente) Möglichkeiten gibt, nach dem gewünschten Ergebnis zu fragen.
Vielen Dank für Ihre Antworten und Vorschläge!
Bitte kennzeichnen Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. –
Sie möchten eine Liste des letzten Ereignisses aller Tabellen oder nur einer Tabelle? – McNets
@GordonLinoff Danke. Markiert mit der DB, die ich verwende. :) – user1330974