Mailinglisten-Archive |
Christian Victor wrote: > Gibt es vielleicht eine Möglichkeit nach dem kleinsten "id" zu selektieren? > Oder sollte ich ORDER BY id LIMIT 1 verwenden? Kommt mir auch unelegant vor > weil ja immer die ganze Datenbank (ca. 50.000 Einträge) durchsucht werden > muss. Also, erst einmal muß NICHT die ganze Datenbank durchsucht werden, wenn ein Index auf id existiert. Das ist ja nun einmal genau der Sinn eines Index, daß man gezielt Elemente selektieren kann ohne die ganze Datenbank durchsuchen zu müssen. In richtigen Datenbanken hat man die Möglichkeit Subqueries zu machen, sodaß man mit SQL> select * from q1; I J K ---------- ---------- ---------- 1 17 21 4 5 6 10 11 12 SQL> select * from q1 where i = ( select min(i) from q1 ); I J K ---------- ---------- ---------- 1 17 21 das kleinste Element findet (i sollte indiziert sein). In MySQL macht man es stattdessen mit ORDER BY id LIMIT 1: mysql> select sid, name, changed from active_sessions order by changed limit 1 -> ; +----------------------------------+--------------+----------------+ | sid | name | changed | +----------------------------------+--------------+----------------+ | 6fae98db39930d862c9a9096701c3c74 | Leab_Session | 19991117181839 | +----------------------------------+--------------+----------------+ 1 row in set (0.00 sec) und das ist schnell, solange ein Index auf der order by-Spalte liegt. Kristian -- Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00 Using PHP3? See our web development library at http://phplib.netuse.de/ (We have moved! Update your bookmarks!)
php::bar PHP Wiki - Listenarchive