mySQL Abfrage optimieren

MySQL, PostgreSQL, SQLite
alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

mySQL Abfrage optimieren

Post by alexander newald » 2003-04-13 13:44

Hallo,

gibt es eine Möglichkeit folgende Abfrage zu optemieren?

Code: Select all

mysql> select CONCAT(YEAR(FROM_UNIXTIME(zeit)),'-',MONTH(FROM_UNIXTIME(zeit))) as datum from troll_traffic GROUP BY datum ORDER BY zeit DESC;
+--------+
| datum  |
+--------+
| 2003-4 |
| 2003-3 |
+--------+
2 rows in set (4.90 sec)
Die Spalte zeit enthält die Unixzeit als Timestamp und ist vom Typ varchar(16), ein Index liegt auf der Spalte. Es sind ca 490.000 Einträge in der Tabelle. Zum Einsatz kommt ein Intel(R) Celeron(R) CPU 1.80GHz mit 512 MB Ram. Query Cache etc sind schon auf hohe Werte eingestellt.

Danke,

Alexander Newald

jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt

Re: mySQL Abfrage optimieren

Post by jtb » 2003-04-13 13:56

dein Problem ist das Group by..
Ein Group by auf einen ermittelten/erechneten Wert ist immer schlecht..

eventl. würde dir folgendes helfen:
select FROM_UNIXTIME(zeit, '%Y-%c') as datum from troll_traffic GROUP BY datum ORDER BY zeit DESC;

http://www.mysql.com/doc/en/Date_and_ti ... tions.html

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: mySQL Abfrage optimieren

Post by alexander newald » 2003-04-13 14:14

Braucht noch länger....

Code: Select all

select FROM_UNIXTIME(zeit, '%Y-%c') as datum from troll_traffic GROUP BY datum ORDER BY zeit DESC;
+--------+
| datum  |
+--------+
| 2003-4 |
| 2003-3 |
+--------+
2 rows in set (8.06 sec)
Gibt es einen anderen Ansatz aus allen timestamp Einträgen die Monate rauszubekommen?

Alexander Newald

jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt

Re: mySQL Abfrage optimieren

Post by jtb » 2003-04-13 14:24

mach mal deine Spalte zum Typ Timestamp..
eventl. braucht MySQL zum konvertieren so lange..

edit: sorry, merke gerade, dass Timestamp für was anderes ist.. Aber vielleicht wäre ein anderer Datentyp wirklich nützlich..

jtb
Posts: 599
Joined: 2002-08-18 16:41
Location: Darmstadt

Re: mySQL Abfrage optimieren

Post by jtb » 2003-04-13 14:50

Hi,

wenn du ein int im Gegensatz zu einem String verwenden würdest, könnte es schon etwas bringen!

Jedenfalls ist

Code: Select all

$sql = 'SELECT FROM_UNIXTIME( '875996000' ) ';
langsamer als

Code: Select all

$sql = 'SELECT FROM_UNIXTIME( 875996000 ) ';