Около 10 запросов, как лучше будет сделать как сейчас или можно ускорить всё это?
Вот как это всё выглядит:
//--------Проверка на новые сообщения--------
$res = mysql_query("SELECT * FROM message WHERE ToUser='$logname' AND DelToUser='' AND status='non'");
$r=mysql_num_rows($res);
$r=$r==0?$r="" : $r=$r;
echo "
<A HREF='inbox.php' class='linkform'>Мои сообщения</A>$r<br>
";
//-------------Проверка на новых друзей-----------
$res = mysql_query("SELECT COUNT( ToUser ) AS count, ToUser, StatusTo FROM friends WHERE ToUser ='$logname' AND StatusTo='' GROUP BY ToUser");
$row=mysql_fetch_array($res);
$r=$row['count'];
if($r!=0)
{
echo "
<A HREF='friends.php?type=new' class='linkform'>Мои друзья</A> <span class='orange'>".$r."</span><br>
";
}
else
{
echo "
<A HREF='friends.php' class='linkform'>Мои друзья</A> <span class='orange'>".$r."</span><br>
";
}
//-------------Проверка подписанных дневников-----------
$res = mysql_query("SELECT * FROM diary_subscribe WHERE FromUser='$logname' AND start_time>time");
if(mysql_affected_rows()!=0){
echo "
<A HREF='diary_subscribe.php' class='linkform'>Мои подписки</A> <span class='orange'>!</span><br>
";
}
//-------------Проверка на новые новости-----------
$res = mysql_query("SELECT COUNT( ToUser ) AS count, ToUser, status FROM user_news WHERE ToUser ='$logname' AND status='non' GROUP BY ToUser");
$row=mysql_fetch_array($res);
$r=$row['count'];
echo "
<A HREF='user_news.php' class='linkform'>Мои новости</A> <span class='orange'>".$r."</span><br>
";
//-------------Проверка на новых гостей-----------
$res = mysql_query("SELECT COUNT( ToUser ) AS count, ToUser, status FROM visitors WHERE ToUser ='$logname' AND status='non' GROUP BY ToUser");
$row=mysql_fetch_array($res);
$r=$row['count'];
echo "
<A HREF='visitors.php' class='linkform'>Мои гости</A> <span class='orange'>".$r."</span><br>
";
//--------Проверка на новые комментарии--------
$res = mysql_query("SELECT COUNT( ToUser ) AS count, ToUser, status FROM comments WHERE ToUser ='$logname' AND status='non' GROUP BY ToUser");
$row=mysql_fetch_array($res);
$r=$row['count'];
echo "
<A HREF='comments.php' class='linkform'>Комментарии</A> <span class='orange'>".$r."</span><br>
</div>
";
//-------------Проверка на новые оценки-----------
$res = mysql_query("SELECT COUNT( ToUser ) AS count, ToUser, status FROM golosa WHERE ToUser ='$logname' AND status='non' GROUP BY ToUser");
$row=mysql_fetch_array($res);
$r=$row['count'];
echo "
<A HREF='vote.php' class='linkform'>Мои оценки</A> <span class='orange'>".$r."</span><br>
</div>
Спустя 7 часов, 51 минута, 10 секунд (7.05.2010 - 20:19) vagrand написал(а):
Ну например вот такой подход:
В корне неверен, нужно делать так:
В этом случае количество посчитает сам MYSQL и ему не придется выбирать все записи удовлетворяющие условию, нагружая тем самым хард и канал.
Тут еще важно убедится что существует составной ключ для таблицы message с полями как в условии where и в таком же порядке.
$res = mysql_query("SELECT * FROM message WHERE ToUser='$logname' AND DelToUser='' AND status='non'");
$r=mysql_num_rows($res);
В корне неверен, нужно делать так:
$res = mysql_query("SELECT count(*) as messagesNum FROM message WHERE ToUser='$logname' AND DelToUser='' AND status='non'");
$info = mysql_fetch_assoc($res);
В этом случае количество посчитает сам MYSQL и ему не придется выбирать все записи удовлетворяющие условию, нагружая тем самым хард и канал.
Тут еще важно убедится что существует составной ключ для таблицы message с полями как в условии where и в таком же порядке.
Спустя 4 часа, 38 минут, 56 секунд (8.05.2010 - 00:58) web-monster написал(а):
Мм да упустил в проверке сообщений. Просто это меню привязывается на каждой странице получается что минимум 7 запросов уже идёт..