Heim >Datenbank >MySQL-Tutorial >Wie findet man effizient die aktuellste Position für jedes Wertpapier in einer Datenbank?

Wie findet man effizient die aktuellste Position für jedes Wertpapier in einer Datenbank?

Susan Sarandon
Susan SarandonOriginal
2025-01-05 02:07:40885Durchsuche

How to Efficiently Find the Most Recent Position for Each Security in a Database?

Gruppenweises Maximum

Sie versuchen, die aktuellste Position für jedes Wertpapier aus einer bestimmten Tabelle abzurufen. Um dies zu erreichen, können Sie die folgende Abfrage verwenden:

SELECT p1.id, 
       p1.security, 
       p1.buy_date 
       FROM positions p1
LEFT JOIN
            positions p2
                ON p1.security = p2.security
                   AND p1.buy_date < p2.buy_date
      WHERE 
      p2.id IS NULL;

In dieser Abfrage wird der Left Join verwendet, um jede Zeile in der Positionstabelle mit jeder anderen Zeile mit derselben Sicherheit zu vergleichen. Die Spalte „buy_date“ wird verwendet, um zu bestimmen, welche Zeile die aktuellste ist. Die WHERE-Klausel filtert dann alle Zeilen heraus, die für ihre jeweilige Sicherheit nicht die neuesten sind.

Das Ergebnis dieser Abfrage ist eine Tabelle mit einer Zeile für jede Sicherheit, die die aktuellste ID, Sicherheit usw. enthält buy_date für diese Sicherheit.

Diese Abfrage ist effizienter als der unterabfragebasierte Ansatz, den Sie zuvor versucht haben, da sie nicht mehrere Durchgänge durch die Positionstabelle erfordert. Stattdessen wird ein einzelner Join verwendet, um die aktuellste Zeile für jedes Wertpapier zu identifizieren, wodurch die Verarbeitung bei großen Datenmengen deutlich schneller erfolgt.

Das obige ist der detaillierte Inhalt vonWie findet man effizient die aktuellste Position für jedes Wertpapier in einer Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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