Abfrage vereinfachen

low-group

Erfahrenes Mitglied
hallo,

Kann man die DB-Abfrage irgendwie vereinfachen?

Funktionieren tut diese schon, aber beim Aufruf dauert dies relativ lange. Das ist die einzige DB-Abfrage im Script.

hier mal der Code:

PHP:
$result=$db->unbuffered_query("SELECT 
p.attachmentid, 
p.posttime,
p.userid, 
p.postid, 
p.threadid, 
p.posttime, 
t.threadid, 
t.topic, 
a.* 
FROM attachments as a 
left join posts as p on p.attachmentid = a.attachmentid 
left join threads as t on p.threadid=t.threadid 
WHERE a.attachmentid = p.attachmentid AND $user[userid] = p.userid
ORDER BY posttime DESC");

PS: die Tabelle Attachment besteht aus nur 6 Spalten und die brauch ich alle, deshalb a.*
 
Versuch' mal Folgendes:
PHP:
<?php
  [...]
  $query = "
	SELECT
	        p.attachmentid,
	        p.posttime,
	        p.userid,
	        p.postid,
	        p.threadid,
	        p.posttime,
	        t.threadid,
	        t.topic,
	        a.*

	  FROM
	        `attachments` a
	  LEFT JOINT
	        `posts` p
	     ON (p.attachmentid=a.attachmentid)
	  LEFT JOIN
	        `threads` t
	     ON (t.threadid=p.threadid)

	  WHERE
	        p.userid = ".$user['userid']."

	  ORDER BY
	        p.posttime DESC
	";
  $result = $db->unbuffered_query($query);
  [...]
?>

Achja, auch wenn alle Spalten einer Tabelle benötigt werden, sollten sie einzeln aufgeführt werden.
 
Ist nur ein Versuch: Lege mal über phpMyAdmin je einen Index über folgende Spalten:
- posts.attachmentid
- posts.threadid
- posts.userid

snuu
 
du müsstest mal die Zeit messen, die der Angehängte Code selbst braucht bzw. an welchen Stellen. Was passiert denn mit dem eval() von dem Templatekram?
Sprich immer verschiedene Code - Bereich in dem Attachment messen.
Kann es auch sein das der Kram drumherum ohne den Code schon lange braucht? Denn selbst wenn ich auf eure Startseite gehe dauert das eine ganz schöne weile...
 
@snuu - auf den Teilen steht schon ein Index

@Ben - die Startseite ist zwar nicht rasend schnell, aber geht noch.
Wenn ich z.b. bei den oberen Beispiel kein Attachment drinne habe, also er durch die Abfrage nix findet, kann ich ja schlecht zw. den Attachments eine Zeit abfragen.

Die Ausgabe der TPL`s ist so normal für das WBB-Board.

Verstehe das auch irgendwie nicht, wieso das soooo lange dauert, als wenn er an irgendeiner Stelle beim Abfragen hängen bleibt.
 
so Fehler gefunden :)

Ich hätte zuerst From Post und dann left join attachment machen müßen. NUn gehts fix :)
 
Zurück