Heim > Datenbank > MySQL-Tutorial > Wie kann ich die neuesten Datensätze für jede Methode und ID in MySQL und PostgreSQL effizient abrufen?

Wie kann ich die neuesten Datensätze für jede Methode und ID in MySQL und PostgreSQL effizient abrufen?

Patricia Arquette
Freigeben: 2024-12-21 17:33:11
Original
247 Leute haben es durchsucht

How to Efficiently Retrieve the Most Recent Records for Each Method and ID in MySQL and PostgreSQL?

Abrufen der neuesten Datensätze aus einer MySQL-Tabelle

Problem:

Eine MySQL-Tabelle speichert die Antworten auf verschiedene RPC Aufrufe mit Feldern für Zeitstempel, Methode, ID und Antwort. Ziel ist es, die aktuellsten Antworten für alle Kombinationen aus Methode und ID abzurufen.

Annahmen:

  • Für jedes Datum kann es eine Antwort geben eine bestimmte Methode/ID.
  • Nicht alle Aufrufkombinationen sind unbedingt für ein bestimmtes Datum vorhanden.
  • Es gibt zahlreiche Methoden, Tausende von IDs und mindestens 365 verschiedene Daten.

Lösung:

Die folgende Abfrage kann verwendet werden, um das gewünschte Ergebnis mithilfe von MySQL-Variablen effizient abzurufen um einen JOIN zu vermeiden:

SELECT * FROM (
    SELECT *, if(@last_method=method,0,1) as new_method_group, @last_method:=method 
    FROM rpc_responses 
    ORDER BY method, timestamp DESC
) as t1
WHERE new_method_group=1;
Nach dem Login kopieren

Diese Abfrage weist zunächst jeder Zeile einen new_method_group-Wert zu, der den Beginn einer neuen Methode angibt Gruppe. Anschließend werden die Ergebnisse so gefiltert, dass nur Zeilen mit einem new_method_group-Wert von 1 enthalten sind. Dadurch wird sichergestellt, dass nur die aktuellste Zeile für jede Methode im Endergebnis enthalten ist.

Alternative Lösung für PostgreSQL:

PostgreSQL bietet eine integrierte Funktion für diese Aufgabe:

SELECT DISTINCT ON (method) timestamp, method, id, response
FROM rpc_responses
WHERE 1 # some where clause here
ORDER BY method, timestamp DESC
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich die neuesten Datensätze für jede Methode und ID in MySQL und PostgreSQL effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage