PDA

Archiv verlassen und diese Seite im Standarddesign 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