codeperformance für mysql-SELECTs

TeCe

Erfahrenes Mitglied
Hullo

...hab auch mal wieder ein "Problem"...naja...eher eine Frage zur optimierung/verbesserung eines kleinen Scripts.
Es funktioniert...eigentlich funktioniert früher oder später alles was ich schreibe...aber es könnte bestimmt auch schneller gehen...
Aber kommen wir mal lieber auf den Punkt :)

Ich habe ein kleines Galerie-Script geschrieben oder bin besser gesagt wieder mal dabei eins zu schreiben.Auf der Startseite kommen ein paar kleine Tables links und rechts. In dem linken sollen nun unter anderem alle möglichen Kategorien der Bildergalerie aufgelistet werden und dahinter noch in Klammern wieviele Bilder in den jeweiligen Kategorien gespeichert sind.

Auch das klappt...aaaber ich kann mir nicht vorstellen das meine Variante das optimalste ist, um die Daten zusammen zu tragen.
Vielleicht hat ja einer von euch´ne bessere Idee :)

PHP:
<?
$category = mysql_query("SELECT DISTINCT cat FROM galery");
while ($cat = mysql_fetch_array($category)) {
	$categorynum = mysql_query("SELECT count(*) FROM galery WHERE cat='$cat[0]'");
	$catnum = mysql_fetch_array($categorynum);
	echo "<a href=?page=galery&cat=".$cat[0]>".$cat[0]."(".$catnum[0].")</a>";
}
?>


||Abschnitt B||
1.
...ist es eigentlich Sinnvoller, wenn ich einfach mitten im durcharbeiten auf die Datenbank zugreife, ist es schlauer immer möglichst Funktionen für alle Zugriffe zu schreiben oder lieber noch aufwendiger alle Queries zu einem großen Contaier zu tragen und dann alle queries direkt nacheinander durchzuarbeiten?

2.
Ist es blöd immer in meinem includeten Header zur DB zu connecten, selbst wenn vielleicht garkeine Abfragen anstehen?

3.
Wird eine Funktion erst aufgerufen, wenn ich sie irgendwo im Script anspreche, oder auch schon, wenn sie von php gelesen wird?
Denn php spuckt ja schon Fehler in meinen funktionen aus, wenn ich sie nichtmal anspreche...


Danke schonmal :)
 
PHP:
$erg = mysql_query("select cat,count(cat) from galery group by cat",$dblink);
while ($row = mysql_fetch_row($erg)){
 echo  "<a href=?page=galery&cat=".$row[0]>".$row[0]."(".$row[1].")</a>";
}

1. ist eigendlich egal
2. nicht wenn du mysql_pconnect benutzt sonst ja
3. eine Function wird eingelesen aber erst beim Aufruf ausgeführt
 
Also danke schonmal für das weitaus kompaktere SELECT!
Versteh nie genau wie man die einzelnen Geschichten kombinieren muss(count, as, from)...was mit Komma getrennt werden muss, was zuerst geschrieben werden soll etc...sieht aber wirklich gut aus und funktioniert auch :)


Hab mich kurz´n bißchen über´s pconnect informiert...[k]persistent[/k] hört sich ja eigentlich noch schlimmer an...
Aber gut...wenn die connection bis zu´nem bestimmten timeout offengelassen wird, statt tausende aufzubauen is natürlich nicht schlecht...aber bei php.net sind so gesehen keine Kommentare sondern nur Warnungen dazu hinterlassen :-D

Naja gut...dank dir für die kleine Nachhilfe+Infos
 
Zurück