Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hi zusammen,

ich habe folgendes Statement, wo ich aber nicht weiß, ob man das noch weiter optimieren kann. Der Zweck ist es die Zeile der Tabelle auszugeben, die die höchste ID hat:

SELECT * FROM MeineTabelle t WHERE t.id = (SELECT MAX(t.id) FROM MeineTabelle) ORDER BY t.id DESC LIMIT 1

Ist da noch Performancepotenzial?

Gruß

Fenixxus

Geschrieben
Hi zusammen,

ich habe folgendes Statement, wo ich aber nicht weiß, ob man das noch weiter optimieren kann. Der Zweck ist es die Zeile der Tabelle auszugeben, die die höchste ID hat:

SELECT * FROM MeineTabelle t WHERE t.id = (SELECT MAX(t.id) FROM MeineTabelle) ORDER BY t.id DESC LIMIT 1

Ist da noch Performancepotenzial?

Gruß

Fenixxus

- das ORDER BY sowie das LIMITsolltest du dir sparen können, vorausgesetzt deine id ist ein PK oder zumindest Unique

- Ich nehme im weiteren an, dass du auf diesem Attribut eine Index gesetzt hast

Gruss

Geschrieben

Moin,


SELECT * 

FROM MeineTabelle t 

WHERE t.id = 

(

    SELECT MAX(t.id) 

    FROM MeineTabelle

) 

ORDER BY t.id DESC 

LIMIT 1

das sollte im Ergebnis identisch sein, obs schneller geht musst du mal probieren:

SELECT * 

FROM MeineTabelle

ORDER BY id DESC 

LIMIT 1

hth

Reinhold

Geschrieben

Ich konnte es zwar noch nicht nachmessen, weil die Tabelle noch kaum Daten enthält, allerdings sollte es ohne Limit und Sortierung performanter sein.

Vielen Dank dafür.

Geschrieben

Sofern auf ID ein Index liegt, und ID wie der Name schon sagt eindeutig ist, sollte das auch bei Milliarden von Datensätzen eine Sache von ms sein(*).

Für die maximale ID muss die DB einfach nur den letzten Eintrag im Index lesen (also auf dem Block ganz rechts), und anschließend mit diesem Wert nochmal auf den Index zugreifen, daraus die Zeile in der Tabelle ermitteln und diese zurückgeben.

Ist die ID eindeutig, kannst Dir das LIMIT sparen. ORDER BY kannst auf jeden Fall weglassen, da alle ID Spalten ja den gleichen Wert haben.

Dim

(*) Hab das grade mal bei einer 220 Mio Zeilen Tabelle in Oracle probiert: 94ms beim ersten, 47ms beim zweiten Aufruf.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...