2017-03-18 6 views
2

Lassen Sie uns sagen, dass ich eine MySQL-Tabelle wie folgt definiert haben:MySQL Select & Grenze Rechenkomplexität

create table test_table(
id int(10) unsigned auto_increment primary key 
/*, other attributes...*/ 
); 

Und da Tabelle I aus den letzten Datensatz holen will wie folgt aus:

select * from test_table order by id desc limit 1; 

Es funktioniert, aber es fühlt sich ein wenig skizzenhaft an, was ist seine Komplexität? Ist es O (log (n)), da "limit" und "order by" nach der Auswahl ausgeführt werden?

Gibt es eine bessere Möglichkeit, den letzten Datensatz aus einer automatisch inkrementierten Tabelle auszuwählen?

Antwort

3

Sie können die gewünschte Ausgabe auch mit diesem Ansatz erhalten.

SELECT * FROM test_table where id=(select max(id) from test_table); 

Hoffe, das wird Ihnen helfen.

+0

Das scheint zu funktionieren, aber was ist die Komplexität der Funktion max()? Durchläuft es nicht alle Indizes, um den höchsten zu finden? Danke für Ihre Antwort! –