[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Быстрота работы
kss
Здравствуйте, скажите, пожалуйста, у меня php-скрипт, который содежит в себе 26 запросов выборки из MySQL из одной и той же таблицы, но все с разными условиями, сильно ли это будет грузить сервер и как отразиться на сайт, одновременная посещаемость которого не более 100 чел???



Спустя 6 минут, 29 секунд (2.08.2011 - 13:29) ИНСИ написал(а):
kss выложи свои запросы сюда, может можно будет оптимизировать их

Спустя 2 минуты, 5 секунд (2.08.2011 - 13:31) kss написал(а):

$nakhodka = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='1'");
$row = mysql_fetch_row($nakhodka);
$total_nak = $row[0];
$last_nak = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='1' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_nak);
$last_author_nak = $row[5];
$last_date_nak = strftime("%d.%m.%Y",$row[16]);

$vlad = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='2'");
$row = mysql_fetch_row($vlad);
$total_vlad = $row[0];
$last_vlad = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='2' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_vlad);
$last_author_vlad = $row[5];
$last_date_vlad = strftime("%d.%m.%Y",$row[16]);

$us = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='4'");
$row = mysql_fetch_row($us);
$total_us = $row[0];
$last_us = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='4' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_us);
$last_author_us = $row[5];
$last_date_us = strftime("%d.%m.%Y",$row[16]);

$art = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='3'");
$row = mysql_fetch_row($art);
$total_art = $row[0];
$last_art = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='3' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_art);
$last_author_art = $row[5];
$last_date_art = strftime("%d.%m.%Y",$row[16]);

$ars = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='5'");
$row = mysql_fetch_row($ars);
$total_ars = $row[0];
$last_ars = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='5' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_ars);
$last_author_ars = $row[5];
$last_date_ars = strftime("%d.%m.%Y",$row[16]);

$bol = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='6'");
$row = mysql_fetch_row($bol);
$total_bol = $row[0];
$last_bol = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='6' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_bol);
$last_author_bol = $row[5];
$last_date_bol = strftime("%d.%m.%Y",$row[16]);

$dal = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='7'");
$row = mysql_fetch_row($dal);
$total_dal = $row[0];
$last_dal = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='7' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_dal);
$last_author_dal = $row[5];
$last_date_dal = strftime("%d.%m.%Y",$row[16]);

$daln = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='8'");
$row = mysql_fetch_row($daln);
$total_daln = $row[0];
$last_daln = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='8' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_daln);
$last_author_daln = $row[5];
$last_date_daln = strftime("%d.%m.%Y",$row[16]);

$les = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='9'");
$row = mysql_fetch_row($les);
$total_les = $row[0];
$last_les = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='9' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_les);
$last_author_les = $row[5];
$last_date_les = strftime("%d.%m.%Y",$row[16]);

$par = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='10'");
$row = mysql_fetch_row($par);
$total_par = $row[0];
$last_par = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='10' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_par);
$last_author_par = $row[5];
$last_date_par = strftime("%d.%m.%Y",$row[16]);

$spa = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='11'");
$row = mysql_fetch_row($spa);
$total_spa = $row[0];
$last_spa = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='11' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_spa);
$last_author_spa = $row[5];
$last_date_spa = strftime("%d.%m.%Y",$row[16]);

$fok = mysql_query("SELECT COUNT(*) FROM phorum_messages WHERE moderator_post<>'' AND forum_id='12'");
$row = mysql_fetch_row($fok);
$total_fok = $row[0];
$last_fok = mysql_query("SELECT* FROM phorum_messages WHERE forum_id='12' ORDER BY message_id DESC LIMIT 1");
$row = mysql_fetch_row($last_fok);
$last_author_fok = $row[5];
$last_date_fok = strftime("%d.%m.%Y",$row[16]);

Спустя 10 минут, 47 секунд (2.08.2011 - 13:41) demonichka написал(а):
Если ты не используеш все поля, то убери звездочку. Вместо нее перечисли необходимые поля.
COUNT(*) лучше заменить на COUNT(id)

Спустя 16 минут, 6 секунд (2.08.2011 - 13:58) kss написал(а):
Спасибо, но почему-то я думаю, что толку мало будет, все-равно идет общая выборка по всем полям, потому что условия есть

Спустя 10 минут, 21 секунда (2.08.2011 - 14:08) ИНСИ написал(а):
kss конечно же можно сделать все одним или максимум двумя запросами. Есть вопросы:
Цитата
$last_author_spa = $row[5];
$last_date_spa = strftime("%d.%m.%Y",$row[16]);

какие название полей в $row[5] и $row[16]?

Спустя 8 минут, 27 секунд (2.08.2011 - 14:16) kss написал(а):
autor = row[5] и datestamp = row[16]

Спустя 22 минуты, 7 секунд (2.08.2011 - 14:38) ИНСИ написал(а):
kss должно получиться так, примерно:
mysql_query("
SELECT DISTINCT `p`.`forum_id`,`p`.*,
IF(
`p`.`forum_id` <> '',
( SELECT COUNT(`moderator_post`) FROM `phorum_messages` WHERE `moderator_post` <> '' AND `forum_id` = `p`.`forum_id`),
0
) AS `sizeOfMessages`
FROM `phorum_messages` AS `p`
WHERE `p`.`forum_id` IN (1,2,3,4,5,6,7,8,9,10,11,12)
ORDER BY `p`.`message_id` DESC
"
) or die(mysql_error());

Спустя 17 минут, 26 секунд (2.08.2011 - 14:56) waldicom написал(а):
Цитата (demonichka @ 2.08.2011 - 11:41)
COUNT(*) лучше заменить на COUNT(id)

Интересно узнать почему так. Точнее говоря интересно, это личные наблюдения подкрепленные цифрами или просто так? Потому что в общем случае Вы не правы.

Спустя 2 часа, 1 минута, 21 секунда (2.08.2011 - 16:57) Snus написал(а):
   SELECT 
`forum_id`, COUNT(*) AS `count`, `datestamp`
FROM `phorum_messages`
WHERE `moderator_post` != ''
AND `forum_id` IN(1,2,3,4,...)
GROUP BY `forum_id`
ORDER BY `forum_id`, `datestamp` DESC

Спустя 51 минута, 41 секунда (2.08.2011 - 17:49) kss написал(а):
Ребятки, спасибо за ответы, навели на мысль. А вообще, мне нужно было из всех этих запросов получить конкретные значения переменных и расскидать их по шаблону, а не просто вывести =) ОГРОМНОЕ СПАСИБО что откликнулись

Спустя 22 минуты, 6 секунд (2.08.2011 - 18:11) ИНСИ написал(а):
Snus я не удалил сообщения, они скрыты и администрация их увидит, не беспокойся. А ты пока остынь денек в "бане" и потом подумай если захочешь, над своим поведением.

Спустя 13 минут, 55 секунд (2.08.2011 - 18:25) VolDroN написал(а):
Круто они скрыты.
Мне напоминает сайт каких то английских военных, новость о которых была недавно в тв, которые выложили на сайт информацию, а засекреченный текст закрасили с помощью css чёрным цветом ((:
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.