Forum Webscript.Ru
Программирование => PHP => Тема начата: Neter от 08 Июля 2002, 22:30:53
-
Вобщем решил я форум сделать PHP+MySQL все месаги и топики хранятся в БД там-же хранится инфа о юзерах...
И у меня всвязи с этим есть вопрос, не будет ли тормозить это дело?? Дело в том, что данные о юзере (ник/пароль/мыло и т.п.) хранятся в таблице, каждому нику присвоен уникальный номер (avto_increment, PRIMARY KEY) .. А в таблице с месагами есть только поле USER_UIN в котором записывается только UIN юзера отправившего месагу..
Вобщем когда всё это дело извлекается мне надо по UIN узнать ник/мыло/etc. юзера для каждого месага, а месагов у меня на странице допустим 40...
И для каждого отправившего месагу мне надо по UIN\'y в цикле извлекать инфу...
Вобщем примерно так...
-----------------
$res = mysql_query(SELECT uin FROM message_list LIMIT 40);
while ($fetch = mysql_fetch_object($res)){
$res2 = mysql_query(SELECT nick, email FROM user_list WHERE user_uin = \'$uin\' LIMIT 1);
$fetch2 = mysql_fetch_object($res2);
echo "Ник пользователя: ".$fetch2 -> nick;
echo "e-mail пользователя: ".$fetch2 -> uin;
}
----------------
-
Вобщем примерно так...
Ни в коем случае! НИКАКИХ SQL В ЦИКЛАХ!!!!
Надо вот так:
$res=mysql_query("SELECT u.nick, u.email FROM message_list m, user_list u WHERE u.user_uin=m.uin LIMIT 40");
while ($f=mysql_fetch_array($res)){
echo "Ник пользователя: ".$f[\'nick\'];
echo "e-mail пользователя: ".$f[\'uin\'];
}
не будет ли тормозить это дело?
Будет. Обязателно будет и не раз.
Но это будет не скоро.
А когда начнёт тормозить будешь с индексированием разбираться!
-
Сенкс, очень помогло...
-
я стобой неполностью согласен насчет неиспользовать запросы в сиквеле, ингда нужно !
-
александр, а когда начнет тормозить?
При каких условиях, и почему?
адвокат, читай внимательнее, на что отвечаешь :-)
-
александр, а когда начнет тормозить?
У мя 2 таблицы 130 и 250000 записей. Дак вот без индексов эт дело очень сильно тормозит (раз в 10-15 медленее).
Когда было 70 и 10000, то всё и так прекрасно работало, а потом пришлось занятся оптимизацией запросов и изменением структур таблиц.
Вот, например, есть у мя рейтинг. Когда было мало народу всё Ок, а потом оптимизация:
Вместо 3 запросов при обращении к кнопке-счётчику сейчас 1
Все связаные поля сделал минимальными (и одинаковыми по типу).
На связаные поля создал индексы.
Протестил индексы. Грохнул индексы.
Создал новые. Протестил индексы.
///
Прогу на PHP для ентого спецовую написал. Щас её хочу доточить и продавать за неимоверно БОЛЬШИЕ $$$ хе-хе...
Если чё по оптимизацию могу поподробнее. Я на этом собаку ...
-
хммм.
обычно люди пользуются вместо РНР прог запросами EXPLAIN SELECT...
И я так и не понял, где будет тормозить у Нетера. про твой счетчик я понял, но у него форум. Вот у него будет где тормозить?
-
Вот у него будет где тормозить?
Смотря какую структуру сделает.
-
Структура тебе здесь дана.
Джойн идет по праймари кей.
Так где обязательно будет тормозить?
вопрос риторический.
Я понимаю, что у тебя счетчик и все такое.
Но не пугай, пожалуйста, автора форума. Не будет у него ничего тормозить. Тем более, что вопрос он задавал про циклы. И с ними не будет, и без них.
-
Те я так понял если я в цикле раз сорок буду извлекать из MySQL у меня не будет ничего тормозить?...
Хотя в принцепе я вроде разобрался с этими запросами, с ними даже удобней.. чем если бы я всё это в цикле колбасил..
-
Блиин, начал дизайн у форума делать кое-что не нравится..
Вобщем мне надо дату из БД извлечь, примерно в таком формате: 02 января 1998 года в 20:42 .. вот так-то вот...
Я конечно понимаю что надо её сначала извлеч примерно в таком формате: date_format(date, \'%d%m%Y%H%i\') AS date1, потом substr\'ом это дело выковыривать по циферкам, потом цыфры месяца ($month_count) подставлять в примерно такой массив:
$month["01"] = "Январь";
$month["02"] = "Февраль";
$month["03"] = "Март";...
И потом только выводить...
$month[$month_count]...
А мона это как-нибудь побыстрее сделать? (в плане выполнения скрипта).
У меня в цикле выводятся разные даты.. а выполнять эту фигню 40 раз изврантно...
-
ты померяй, сколько миллисекунд будут выполняться эти два субстра даже при 400 циклах, и успокойся :-)
-
такой известный форум, как Phorum как раз в цикле данные извлекает. каждое сообщение - запрос.
MySQL оптимизирована для большого количества простых запросов.
простые же строковые операции - вообще за считанные такты исполняются.
-
Сенкс... Будем делать...