сделай профилирование, и посмотри, какие запросы долго выполняются.
Сразу после подключения, и выбора бд
mysql_query("set profiling = 1");
mysql_query("set profiling_history_size = 100");
В самом конце, после отработки всех запросов
echo '<h1>Database Profiling</h1><table border="1">';
$result = mysql_query("show profiles");
$i = $duration = 0;
while($row = mysql_fetch_assoc($result)){
if($i++ == 0)
echo '<tr><th>#</th><th>'.implode('</th><th>', array_keys ($row)).'</th></th>';
echo '<tr><td>'.$i.'</td><td>'.implode('</td><td>', $row).'</td></tr>';
$duration += $row['Duration'];
}
echo '</table><h2>Total duration: '.$duration.'</h2>';
PS на хостинге может не работать, если mysql не был скомпилирован с флагом enable-profiling