|< 1 2 3 >| | 24 Einträge, 3 Seiten |
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)
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)
1
2
3
4
+--------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------+------+-----+---------------------+----------------+
| accessdate | datetime | | MUL | 0000-00-00 00:00:00 | |
QuoteJa, die Anwendung wird nachts angeschmissen, aber ich habe auch Anwendungen mit einer aehnlichen Problematik, die interaktiv laufen sollten.Eine andere Variante wäre, per Cron-Job(nachts) die Tabelle nach dem Datumsfeld zu sortieren.
Quote> mysql> select accesslog_id from accesslog where accessdate >= "2004-01-01 00:00:00" limit 0,1;
> 1 row in set (0.06 sec)
Wie lange dauert es denn, wenn Du nach einem Datum suchst, was ganz am Ende der Tabelle steht?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> select min(accesslog_id) from accesslog where accessdate >= "2004-06-01 00:00:00";
+-------------------+
| min(accesslog_id) |
+-------------------+
| 12700047 |
+-------------------+
1 row in set (14.72 sec)
mysql> select min(accesslog_id) from accesslog where accessdate >= "2004-06-07 00:00:00";
+-------------------+
| min(accesslog_id) |
+-------------------+
| 13419582 |
+-------------------+
1 row in set (1.41 sec)
Quote@Thorium
da bietet sich der Unix-Timestamp als Integer an.
Eventuell auch mit Cron als Extraspalte.
Oder man verwendet TIMESTAMP als Datentyp, der wird intern als UNSIGNED INT gespeichert.(spart auch noch 4 * 13*10**6 Byte)
1
2
3
4
5
6
7
8
9
10
$i=0;
while(1) {
warn $i;
$sql = qq{SELECT accesslog_id FROM accesslog WHERE accessdate >= "2004-01-01 00:00:00" LIMIT $i,1000};
$sth = $g_dbh->prepare($sql);
$sth->execute;
$x = $sth->fetchall_arrayref;
last if not @$x;
$i+=1000;
}'
|< 1 2 3 >| | 24 Einträge, 3 Seiten |