Thread Effiziente SELECTs in MySQL: Insertion order determinieren? (23 answers)
Opened by ptk at 2004-06-08 16:02

ptk
 2004-06-08 16:02
#32214 #32214
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich habe hier eine grosse MySQL-Tabelle mit ueber 13*10^6 Datensaetzen, welche nach Datum sortiert eingefuegt wurden. Die Id wird per auto_increment erzeugt. Ich moechte nun zu einem Datum den naechsten Datensatz herausfinden. Mit diesem SELECT geht das ganz gut und schnell:
Code: (dl )
1
2
3
4
5
6
7
mysql> select accesslog_id from accesslog where accessdate >= "2004-01-01 00:00:00" limit 0,1;
+--------------+
| accesslog_id |
+--------------+
| 3127136 |
+--------------+
1 row in set (0.06 sec)

Allerdings verlasse ich mich darauf, dass die interne Sortierung mit der accesslog_id-Sortierung uebereinstimmt. Nach ein bisschen Googlen sieht es so aus, als ob man sich nicht 100%ig darauf verlassen kann. Die richtige Methode wuerde so aussehen:
Code: (dl )
1
2
3
4
5
6
7
mysql> select min(accesslog_id) from accesslog where accessdate >= "2004-01-01 00:00:00";
+-------------------+
| min(accesslog_id) |
+-------------------+
| 3127136 |
+-------------------+
1 row in set (2 min 26.32 sec)

(oder alternativ mit ORDER BY). Das ist aber ziemlich langsam. Weiss jemand Vorschlaege, Alternativen ...?

View full thread Effiziente SELECTs in MySQL: Insertion order determinieren?