Query Optimieren

the_condor

Registered User
Hallo Community,
ich hoffe das Ihr mir etwas weiter helfen könnt.

Ich Sitze gerade mit Explain hier und Prüfe hier meine Abfragen in meinem Board.
Hier habe ich nun eine Abfrage die ich einfach nicht Optimiert bekomme.

Abfrage selbst
PHP:
SELECT bb1_threads.topic, bb1_threads.threadid, bb1_threads.votepoints/bb1_threads.voted AS vote, bb1_threads.boardid FROM bb1_threads LEFT JOIN bb1_boards ON (bb1_boards.boardid=bb1_threads.boardid) ORDER BY vote DESC LIMIT 1

Explain
Code:
id 	select_type 	table 	type 	possible_keys 	key 	key_len 	ref 	rows 	Extra
1 	SIMPLE 	bb1_threads 	ALL 	NULL 	NULL 	NULL 	NULL 	56640 	Using filesort
1 	SIMPLE 	bb1_boards 	eq_ref 	PRIMARY,boardid 	PRIMARY 	4 	forum.bb1_threads.boardid 	1 	Using index

Problem Denke ich liegt bei Table bb1_threads diese hat den Type all.
all heißt doch FULL TABLE SCAN , hinzu kommt das Using filesort bei Extra steht und die joins haben auch eine extreme größe.

Hat jemand eine Idee wie das etwas netter gestallten kann?

the_condor
 
Derzeit ist der JOIN mit bb1_boards sinnlos. Du hast weder eine WHERE-Klausel mit einer Bedingung, die auf ein Feld in bb1_boards zugreift, noch selektierst du ein entsprechendes Feld.

Die Abfrage
Code:
 SELECT bb1_threads.topic, bb1_threads.threadid, bb1_threads.votepoints/bb1_threads.voted AS vote, bb1_threads.boardid FROM bb1_threads ORDER BY vote DESC LIMIT 1
dürfte derzeit das gleiche Ergebnis liefern.
 
Oder an der Ausführzeit - was kann man da nun tun ?
Sinnvolle Indizes wären ein Anfang, z. B. über bb1_threads.votepoints und bb1_threads.voted, oder gleich das Ergebnis von bb1_threads.votepoints/bb1_threads.voted in ein dediziertes Feld mit eigenem Index speichern.
 
Danke Roger,

- 18 Grad Gestern Abend hrhr.

Davon ab - habe ich mir das auch schon angeschaut, nur ich verstehe es einfach nicht.
Im ganzen konnte ich zwar einiges Optimieren und die Indizes sind gesetzt.

Ich bräuchte eher ein Live Demo wie man das ganze in ein dedi Feld setzt und dann abfragt.

mfg
the_condor
 
Back
Top