phpbar.de logo

Mailinglisten-Archive

[dbs] Handler_read_rnd_next sehr hoch

[dbs] Handler_read_rnd_next sehr hoch

Sebastian Mendel lists at sebastianmendel.de
Don Okt 5 09:05:58 CEST 2006


ANGEL Harald schrieb:
> Sebastian Mendel:
>> Er soll die das slow query log schicken.
>> Dort stehen alle Abfragen drin die zu lange brauchen oder keinen Index
>> verwenden.
> 
> Danke für den Tipp!
> Hab das jetzt erhalten und angefangen, die SQLs zu durchforsten.
> Da führt mich gleich zu einer kleinen Verständnisfrage und ich hoffe ihr könnt mir helfen:
> 
> Dieser ansich einfache SQL:
> SELECT meinung.* 
> FROM meinung
> WHERE forumID = 30284
> ORDER BY meinung.threadid DESC, meinung.sort
> LIMIT 0 , 30
> 
> sollte ja theoretisch nur 30 zeilen lesen.
> Wenn ich mir den SQL allerdings mit EXPLAIN ansehe, sehe ich das:
> key -> forumID
> key_len -> 4
> ref -> const
> rows -> 2604
> Extra -> Using where; Using filesort
> 
> laut http://dev.mysql.com/doc/refman/4.0/de/explain.html ist rows ja die anzahl, die zeilen, die mysql untersuchen muss.
> Was muss ich in meinem SQL ändern, damit der MYSQL wirklich nur die benötigten 30 zeilen untersuchen muss?
> Oder ist das wegen dem ORDER BY?

Richtig wenn du bei dem EXPLAIN das ORDER BY weglässt wirst du sicher
sehen das er nicht alle 2604 Zeilen bruacht, das wirklich schlimme ist
aber "Extra -> Using where; Using filesort"

Ein ORDER BY ... DESC lässt sich aber schlecht optimieren in MySQL da
MySQL noch keine Abwärtssotierten Schlüssel kann.

Ich wüsste jetzt nicht wie du bei einem ORDER BY ... DESC das 'Using
filesort' umgehen kannst, ohne das RE-Modell zu ändern.

Aber vielleicht liegt die Lösung ja im Kontext, warum/weiso/wofür du die
Daten dieser Abfrage überhaupt benötigst ...


P.s. hast du einen eigenen DB-Server oder nur eine DB auf einem
gemeinsamen DB-Server? Vielleicht kannst du ja mal fragen ob der query
cache aktiviert ist. Das kann man auch in phpMyAdmin sehen, wo 'er' auch
die anderen zwei Infos her hat.



-- 
Sebastian Mendel

www.sebastianmendel.de

php::bar PHP Wiki   -   Listenarchive