Heim >Datenbank >MySQL-Tutorial >Wie lassen sich die aktuellsten Standortdaten für jeden Datensatz in einer verknüpften Abrechnung effizient abrufen?
Auswählen des aktuellsten Datums in einer verknüpften Anweisung: Fehlerbehebung beim Abrufen historischer Standortdaten
Diese Abfrage zielt darauf ab, die historischen Standorte eines Datensatzes abzurufen und die entsprechenden Termine. Allerdings dauert die Ausführung der aktuellen Implementierung übermäßig lange und führt zu doppelten Datensätzen. Die erwartete Ausgabe ist eine vereinfachte Liste von Datensätzen mit ihren aktuellsten Standorten.
Die ursprüngliche Abfrage versucht, das aktuellste Datum zu finden, das jeder Datensatz-ID zugeordnet ist, indem sie einen Selbstverknüpfungsvorgang ausführt. Dieser Ansatz ist jedoch ineffizient und kann insbesondere bei größeren Datensätzen zu Leistungsproblemen führen.
Korrekte Abfrage
Um die Abfrage zu optimieren, können wir die folgende korrigierte Version verwenden :
SELECT t1.received_id , t1.transaction_id , t1.date_modified , l.location FROM transactions t1 JOIN ( SELECT received_id, MAX(date_modified) maxmodify FROM transactions GROUP BY received_id) max_record ON max_record.received_id = t1.received_id AND max_record.maxmodify = t1.date_modified JOIN locations l ON l.location_id = t1.location_id JOIN received r ON r.received_id = t1.received_id WHERE t1.received_id = '1782' ORDER BY t1.date_modified DESC
Erklärung
In dieser Abfrage stellen wir vor Ein allgemeiner Tabellenausdruck (CTE), um das maximale Datum für jede Datensatz-ID in der Transaktionstabelle zu ermitteln. Der CTE ist:
SELECT received_id, MAX(date_modified) AS maxmodify FROM transactions GROUP BY received_id
Wir verbinden dann die ursprüngliche Transaktionstabelle (t1) mit diesem CTE (max_record) im Feld „received_id“. Darüber hinaus filtern wir nach der Spalte „maxmodify“, um sicherzustellen, dass nur Transaktionen mit dem aktuellsten Datum enthalten sind. Dies optimiert die Abfrage, indem unnötige Verknüpfungen und Duplikate vermieden werden.
Mit dieser optimierten Abfrage können wir effektiv die historischen Standorte für jeden Datensatz abrufen und sicherstellen, dass wir nur den aktuellsten Standort für jede eindeutige Datensatz-ID abrufen.
Das obige ist der detaillierte Inhalt vonWie lassen sich die aktuellsten Standortdaten für jeden Datensatz in einer verknüpften Abrechnung effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!