Philipp Hasenfratz: (MySQL) Niedrigste ID und Details zugleich herauslesen?

Beitrag lesen

Halihallo muenzchen

Nur eine einzige Frage habe ich dazu noch. Ist das bei vielen Datensätzen nicht ziemlich schwer für die Datenbank, da ja eigentlich alle Datensätze ausgelesen oder zumindest geordnet werden müssen? Das ist doch eigentlich mehr Aufwand als nur einen einzigen Datensatz auszulesen (falls das eben geht), oder?

Der Gedanke ist richtig, nur lautet die Antwort dennoch nein. MySQL verhält sich bei
ORDER BY in Verbindung mit LIMIT so, dass immer nur solange sortiert wird, bis die Anzahl
zu selektierenden Datensätzen erreicht ist (in deinem Fall besteht das Sortieren also
darin, die grösste id zu finden und diesen Eintrag zurückzugeben). Zudem lässt mich der
Name "id" darauf schliessen, dass du diesen als PRIMARY KEY definiert hast, PRIMARY KEYs
werden implizit indiziert (UNIQUE-Index) und durch diesen Index ist es der Datenbank
sehr schnell möglich, die maximale id zu finden. Dein Query wird auch bei einer Tabelle
mit 1'000'000'000 Einträgen noch sehr, sehr performant sein.
Anders aber, wenn du kein LIMIT-Clause hast und/oder ein Feld sortierst, welches nicht
indiziert ist; dann kriegst du den Sortier-Aufwand bei der zuvorgenannten Tabelle schon
zu spüren.

Viele Grüsse

Philipp