Hallo,
ich habe einen Account bei 1und1, und habe eine meiner Meinung nach recht einfach DB-ABfrage, die aber leider ewig läuft (der baut die HTML Datei Zeile für Zeile auf, man kann zuschauen).
1und1 meint, die DB wäre schnell, das würde an meiner Abfrage liegen - ich finde aber nichts. Könnt ihr mal einen Blick draufwerfen und mir evtl. sagen, wo ich da was drehen könnte?
Code:
$sql="SELECT * FROM branche WHERE status<75 order by bezeichnung";
$rs=mysql_db_query($db,$sql,$conn);
$i=0;
echo "<tr>";
while ($line=mysql_fetch_array($rs)){
// Anfangsbuchstabenwechsel?
$first=substr($line["bezeichnung"],0,1);
if ($first!=$first_alt){
echo "</tr><tR><tr><td colspan=".$var_anzahl_spalten_branche." height=5></td></tr><tR><td colspan=".$var_anzahl_spalten_branche." height=1 ><img src=../bilder/linie_rot.gif width=100% height=1></td></tr><tr><td colspan=".$var_anzahl_spalten_branche." height=5 ></td></tr><tr>";
$first_geschrieben=1;
$i=0;
}
$sql_anz="SELECT count(adresse2branche.id) FROM adresse2branche LEFT JOIN adresse ON adresse_id=adresse.id WHERE branche_id=${line["id"]} AND freigabe_branche=1";
$rs_anz=mysql_db_query($db,$sql_anz,$conn);
echo mysql_error();
$anz=mysql_fetch_row($rs_anz);
anzahl=$anz[0];
echo "<td class=zeige_branche><a href=\"zeige_branche.php?branche_id=".$line["id"]."\">".$line["bezeichnung"]."</a> (".$anzahl.")</td>\n";
if ($first_geschrieben==1) // schon linie geschrieben?
$first_geschrieben=0;
else
{
$vergl1=$i%$var_anzahl_spalten_branche;
$vergl2=$var_anzahl_spalten_branche-1;
if
($vergl1==$vergl2){
echo "</tr><tr>";
}
}
$first_alt=$first;
$i=$i+1;
// Zeilenwechsel?
}
Die Tabelle adresse hat 1190 Sätze, ich habe auf die id einen Index und ein Primary gesetzt.
Die Tabelle adresse2branche hat 1730 Sätze, und auch hier auf die id index und Primary, übrigens jeweils mit autoincrement.
Also, ich finde, dass sollte jede DB ohne zwinkern schaffen, aber vielleicht bin ich ja auf dem Holzweg?
Viele Dank im voraus,
Uta