PDA

Vollständige Version anzeigen : Abfrage optimieren


Gremlin
10.09.2008, 20:02
Hallo,
ich möchte bei mir ganz einfach die letzten 30 Einträge der Logs anzeigen lassen dafür nutze ich folgenden Befehl:

SELECT id,klammid,referer,ip,verdienst,zeit,art FROM `aufrufe` LIMIT 1441830 , 30

soweit ja nichts aufwändiges. Aber MySQL zickt da rum und ist recht langsam:

Zeige Datensätze 1441830 - 1441859 (1,441,861 insgesamt, die Abfrage dauerte 11.2204 sek.)

Und slow_query.log zeigt folgendes:


# Time: 080910 18:56:17
# User@Host: web1[web1] @ localhost []
# Query_time: 11 Lock_time: 0 Rows_sent: 18 Rows_examined: 1441848
use usr_web1_2;
SELECT * FROM `aufrufe`
LIMIT 1441830, 30;


EXPLAIN SELECT id, klammid, referer, ip, verdienst, zeit, art
FROM `aufrufe`
LIMIT 1441830 , 30
Liefert auch 1441848 Rows die gescannt werden sonst überall NULL und Select Type SIMPLE

Hat jemand eine Idee wie ich das optimieren kann !?

SebbyPHM
10.09.2008, 20:56
mach doch einfach ein SELECT mit ORDER BY zeit DESC LIMIT 30

... und dann sortierste das ergebnis einfach andersrum *gg

Gremlin
10.09.2008, 21:13
Manchmal sieht man den Wald vor lauter Bäumen nicht :biggrin1:
Index auf Zeit gelegt und nun geht es in 0,001 Sekunde :smile:

Benutzer1699
11.09.2008, 19:02
Manchmal sieht man den Wald vor lauter Bäumen nicht :biggrin1:
Index auf Zeit gelegt und nun geht es in 0,001 Sekunde :smile:

thx, made my day :P