Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » оптимизация подключений к базе данных MySQL

Ответить
Настройки темы
оптимизация подключений к базе данных MySQL

Старожил


Сообщения: 359
Благодарности: 6


Конфигурация

Профиль | Отправить PM | Цитировать


у меня скрипт в среднем делает 50 == плюс -- минус 10 запросов к бд за один заход
это нормально или еще надо оптимизировать его ?
было до 100 запросов

Отправлено: 16:59, 28-06-2011

 

Deadooshka


Сообщения: 2547
Благодарности: 696

Профиль | Отправить PM | Цитировать


кэшируйте каким-нибудь мемкешем...

Отправлено: 18:40, 29-06-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 359
Благодарности: 6

Профиль | Отправить PM | Цитировать


надо запросов ещо урезать

все явные дубли я убрал

но вот на таких запросах застрял основательна
вот такой
PHP код: Выделить весь код

$sql2 mysql_query("SELECT * FROM `users` where rang='0'");

$ur0=mysql_num_rows($sql2);
$sql3 mysql_query("SELECT * FROM `users` where rang='1'");
$ur1=mysql_num_rows($sql3);
$sql4 mysql_query("SELECT * FROM `users` where rang='2'");
$ur2=mysql_num_rows($sql4);
$sql5 mysql_query("SELECT * FROM `users` where rang='3'");
$ur3=mysql_num_rows($sql5);
$sql6 mysql_query("SELECT * FROM `users` where rang='4'");
$ur4=mysql_num_rows($sql6);
$sql7 mysql_query("SELECT * FROM `users` where rang='5'");
$ur5=mysql_num_rows($sql7);
$sql8 mysql_query("SELECT * FROM `users` where rang='6'");
$ur6=mysql_num_rows($sql8);
$sql9 mysql_query("SELECT * FROM `users` where rang='7'");
$ur7=mysql_num_rows($sql9);
$sql20 mysql_query("SELECT * FROM `users` where rang='8'");
$ur8=mysql_num_rows($sql20);
$sql21 mysql_query("SELECT * FROM `users` where rang='9'");
$ur9=mysql_num_rows($sql21);
$sql22 mysql_query("SELECT * FROM `users` where rang='10'");
$ur10=mysql_num_rows($sql22); 

предложили урезать до

PHP код: Выделить весь код

$sql2 mysql_query("SELECT * FROM `users` where rang in (0,1,2,3,4,5,6,7,8,9,10)");

$ur0=mysql_num_rows($sql2);
switch(
$ur0['rang']) {
   case 
1/* здесь действия для rang = 1 */ break;
   case 
2/* здесь действия для rang = 2 */ break;
   case 
3/* здесь действия для rang = 3 */ break;
// и т.д


но я так и не понял что здесь писать

PHP код: Выделить весь код

case 1/* здесь действия для rang = 1 */ break; 



Отправлено: 19:27, 29-06-2011 | #3


Deadooshka


Сообщения: 2547
Благодарности: 696

Профиль | Отправить PM | Цитировать


цель непонятна, там только строки считать нужно (судя по mysql_num_rows)?

Отправлено: 19:48, 29-06-2011 | #4


Старожил


Сообщения: 359
Благодарности: 6

Профиль | Отправить PM | Цитировать


PHP код: Выделить весь код

$sql2 mysql_query("SELECT * FROM `users` where rang='0'"); 

$ur0=mysql_num_rows($sql2);
echo 
" пользователей с рангом 0  $ur0 столькото";
//и т д 


Отправлено: 20:15, 29-06-2011 | #5


Deadooshka


Сообщения: 2547
Благодарности: 696

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
SELECT
    COUNT(`rang`) AS `num`,
    `rang`
FROM
    `users`
WHERE
    `rang` =<  10
GROUP BY
    `rang`
внутри цикла while($row = ....) можно выводить

PHP код: Выделить весь код

echo " пользователей с рангом {$row['rang']} - {$row['num']}"


Отправлено: 20:40, 29-06-2011 | #6


Старожил


Сообщения: 359
Благодарности: 6

Профиль | Отправить PM | Цитировать


я конечно извиняюсь за то что одно и тоже с разных сторон подсовываю но мне в цикле не надо

вот кусок кода который надо оптимизировать
PHP код: Выделить весь код

<?=$lang['stats6'];?> //пользователей рангом

PHP код: Выделить весь код

<?if($ur>=2){

$sql4 db_query("SELECT * FROM  ".$db_pref."users where rang='2'");
$ur2=mysql_num_rows($sql4);
?>
<tr>
<th align="left">  <?=$lang['stats6'];?> 2</th>
<th align="right"><?=$ur2;?> </th>
</tr>
<?}if($ur>=3){
$sql5 db_query("SELECT * FROM  ".$db_pref."users where rang='3'");
$ur3=mysql_num_rows($sql5);
?>
<tr>
<th align="left">  <?=$lang['stats6'];?> 3</th>
<th align="right"><?=$ur3;?> </th>
</tr>
<?}if($ur>=4){
$sql6 db_query("SELECT * FROM  ".$db_pref."users where rang='4'");
$ur4=mysql_num_rows($sql6);
?>
<tr>
<th align="left">  <?=$lang['stats6'];?> 4</th>
<th align="right"><?=$ur4;?> </th>
</tr>
<?}if($ur>=5){
$sql7 db_query("SELECT * FROM  ".$db_pref."users where rang='5'");
$ur5=mysql_num_rows($sql7);
?>
<tr>
<th align="left">  <?=$lang['stats6'];?> 5</th>
<th align="right"><?=$ur5;?> </th>
</tr>


Отправлено: 21:07, 29-06-2011 | #7


Deadooshka


Сообщения: 2547
Благодарности: 696

Профиль | Отправить PM | Цитировать


Выполните запрос в панели MySQL, и увидите, что в результате все собрано, остается эти цифры рассовать по переменным в цикле (обычный разбор результата запроса) и выводить эти переменные.

Отправлено: 21:52, 29-06-2011 | #8


Старожил


Сообщения: 359
Благодарности: 6

Профиль | Отправить PM | Цитировать


Sham, покажите пожалуйста где моя ошибка

PHP код: Выделить весь код

$sql=db_query("SELECT COUNT(`rang`) AS `num`,`rang` FROM `users` WHERE `rang` =<  10 GROUP BY `rang`");

 while (
$row mysql_fetch_array($sql)) {//вот здесь выкидывает == Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
echo " пользователей с рангом {$row['rang']} - {$row['num']}"



Отправлено: 16:45, 30-06-2011 | #9


Deadooshka


Сообщения: 2547
Благодарности: 696

Профиль | Отправить PM | Цитировать


а что db_query отдает? Это вроде не родная функция. см. mysql_query.

если она массив отдает, то foreach ($sql as $row) вместо while

Отправлено: 17:16, 30-06-2011 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » оптимизация подключений к базе данных MySQL

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Отличие методов доступа к базе данных MySQL von JoSy Программирование и базы данных 0 07-07-2010 12:46
Проблемы с доступом к базе MySQL Alexey2006 Вебмастеру 4 16-01-2009 21:57
MySQL - [решено] сохранение данных в базе данных Mysql TigerZaka Программирование и базы данных 4 24-08-2008 15:48
Mysql, оптимизация таблицы (создание индексов) ivank Вебмастеру 7 07-03-2007 17:47
Права доступа к базе MySQL monada Вебмастеру 3 29-10-2003 21:33




 
Переход