PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL-Query-Performance


rellek
27.11.2006, 19:45
Hallo,


es gibt da fürs vB so einen schicken Hack. Sein Name ist "Top"X"-Statistics" und er kommt von InfinityWebby. Diesen habe ich ein wenig auf vBHacks-Germany umgecodet, sodass er nicht mehr ganz so viel (imho) irrelevante Sachen abfragt. Ist ja auch egal :)

Nun ist aber das Problem, dass diese jene welche Datenbank-Abfrage, die ausgeführt wird, relativ lang braucht für sich alleine (~0,2s):
$getstats_threads = $db->query_read("
SELECT
thread.threadid, thread.title, thread.lastpost, thread.forumid, thread.replycount, thread.lastposter, thread.postusername, thread.postuserid, thread.dateline, IF(views<=thread.replycount, thread.replycount+1, views) AS views, thread.attach, user.username, user.userid, forum.title_clean
FROM " . TABLE_PREFIX . "thread AS thread
LEFT JOIN " . TABLE_PREFIX . "user AS user ON (user.username = thread.lastposter)
LEFT JOIN ".TABLE_PREFIX."forum AS forum ON (forum.forumid = thread.forumid)
$deljoin
WHERE NOT ISNULL(thread.threadid)
$excludedforums
AND thread.visible <> 2
ORDER BY thread.lastpost DESC LIMIT 0, $displayrecords");

Aufgrund von Bastelarbeiten mit einem Hack, der im Wesentlichen dasselbe macht, aber halt fürs wBB, bei einem etwas größeren Forum, weiß ich, dass der Knackpunkt bei dem Punkt liegt, wo nicht zugreifbare Foren abgefragt werden, bzw. wo die von der Suche ausgeschlossen werden. Wird also praktisch diese Einschränkung weggelassen, wird die Abfrage _sehr_ viel schneller ausgeführt.

So, nun die große Preisfrage: Was könnte man ändern, damit diese Abfrage etwas an Performance gewinnt? Oder ist das ab einer bestimmten Forengröße so, dass das dann lange dauert? Kann ich mir aber fast nicht vorstellen... :-/


Danke schonmal für eure Hilfe :)