roxy: mysql verbindung und parse time

hallo, mom hat z.b. eine seite von mir eine parse time von ca. 2sec, das finde ich extrem lang, das wird durch die dutztenden mysql verbindungen kommen, nun will ich dies verhindern und mein script bissel performen, daher habe ich ein paar fragen:

1. gibt es zu diesem thema eine seite die sich damit veschäftigt und tips gibt?
2. hier mal ein ausschnitt:

$query = mysql_query("SELECT DISTINCT starterid, starter, count(*) as treadcount FROM bb2_threads GROUP by starterid ORDER BY treadcount DESC LIMIT 10;") or die(mysql_error());
    while($f = mysql_fetch_array($query)){
        if (($f['starter'] == Gast) AND ($f["starterid"] == 0)) {
            echo()} else { echo()}
    }

und eine andere stelle:

$sql = "SELECT
                hits,
                url,
                titel
            FROM
                sidehits
            ORDER BY
                hits
            DESC LIMIT
                10;";

$result = mysql_query($sql) OR die(mysql_error());
         while($row = mysql_fetch_assoc($result)) {
            echo();
        }

kann man diese beiden klein scripte noch besser optimieren? und kann man vielleicht die quarys minimieren bzw zusammenschließen?

  1. yo,

    ... durch die dutztenden mysql verbindungen kommen

    pro skript sollte in aller regel eigentlich nur eine verbindung notwendig sein, die dann am ende aller abfragen beendet wird. meinst du etwa dutzende abfragen ?

    $query = mysql_query("SELECT DISTINCT starterid, starter, count(*) as treadcount FROM bb2_threads GROUP by starterid ORDER BY treadcount DESC LIMIT 10;") or die(mysql_error());

    hier ist das DISTINCT überflüssig. ein distinct führt eine zusätzliche sortierung aus. ausserdem ist zu beachten, dass das feld starter für jede gebildtete groupierung immer gleich sein muss, weil es nicht in der GROUP BY klausel mit angegeben wurde, was aber durchaus der fall sein kann.

    beide abfragen lassen sich wohl eher nicht zusammenfassen, aber dafür müsste man schon ein wenig mehr infos über das datenbankdesign haben. grundsätzlich sind das sehr "einfache" abfragen, die einem dbms nicht besonderns viel abverlangen, ausser das hier und dort sortiert wird. wenn du also nicht zig-tausende von datensätze hast, sollte die geschwindigkeit im rahmen bleiben. die 2 sekunden dauer kann auch andere ursachen haben.

    Ilja