Автор Тема: Извлечение данных из MySQL при помощи PHP  (Прочитано 4903 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Вобщем решил я форум сделать 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 nickemail FROM user_list WHERE user_uin = \'$uin\' LIMIT 1);
$fetch2 = mysql_fetch_object($res2);
echo "Ник пользователя: ".$fetch2 -> nick;
echo "e-mail пользователя: ".$fetch2 -> uin;
}

----------------
Мне тормоз послужил толчком...

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Извлечение данных из MySQL при помощи PHP
« Ответ #1 : 09 Июля 2002, 07:39:49 »
Цитировать
Вобщем примерно так...

Ни в коем случае! НИКАКИХ 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\'];
}


Цитировать
не будет ли тормозить это дело?

Будет. Обязателно будет и не раз.
Но это будет не скоро.
А когда начнёт тормозить будешь с индексированием разбираться!
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Извлечение данных из MySQL при помощи PHP
« Ответ #2 : 09 Июля 2002, 23:24:58 »
Сенкс, очень помогло...
Мне тормоз послужил толчком...

Оффлайн advocat

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 73
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.php.net.ua
Извлечение данных из MySQL при помощи PHP
« Ответ #3 : 15 Июля 2002, 16:40:33 »
я стобой неполностью согласен насчет неиспользовать запросы в сиквеле, ингда нужно !
заходите в гости
адвокат, это не профессия, это диагноз ! [ обитаю в PHP ]

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Извлечение данных из MySQL при помощи PHP
« Ответ #4 : 15 Июля 2002, 16:51:06 »
александр, а когда начнет тормозить?
При каких условиях, и почему?

адвокат, читай внимательнее, на что отвечаешь :-)

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Извлечение данных из MySQL при помощи PHP
« Ответ #5 : 16 Июля 2002, 07:54:06 »
Цитировать
александр, а когда начнет тормозить?

У мя 2 таблицы 130 и 250000 записей. Дак вот без индексов эт дело очень сильно тормозит (раз в 10-15 медленее).
Когда было 70 и 10000, то всё и так прекрасно работало, а потом пришлось занятся оптимизацией запросов и изменением структур таблиц.
Вот, например, есть у мя рейтинг. Когда было мало народу всё Ок, а потом оптимизация:
Вместо 3 запросов при обращении к кнопке-счётчику сейчас 1
Все связаные поля сделал минимальными (и одинаковыми по типу).
На связаные поля создал индексы.
Протестил индексы. Грохнул индексы.
Создал новые. Протестил индексы.
///
Прогу на PHP для ентого спецовую написал. Щас её хочу доточить и продавать за неимоверно БОЛЬШИЕ $$$ хе-хе...

Если чё по оптимизацию могу поподробнее. Я на этом собаку ...
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Извлечение данных из MySQL при помощи PHP
« Ответ #6 : 16 Июля 2002, 10:24:01 »
хммм.
обычно люди пользуются вместо РНР прог запросами EXPLAIN SELECT...

И я так и не понял, где будет тормозить у Нетера. про твой счетчик я понял, но у него форум. Вот у него будет где тормозить?

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
Извлечение данных из MySQL при помощи PHP
« Ответ #7 : 16 Июля 2002, 10:29:19 »
Цитировать
Вот у него будет где тормозить?

Смотря какую структуру сделает.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Извлечение данных из MySQL при помощи PHP
« Ответ #8 : 16 Июля 2002, 11:00:22 »
Структура тебе здесь дана.
Джойн идет по праймари кей.
Так где обязательно будет тормозить?
вопрос риторический.
Я понимаю, что у тебя счетчик и все такое.
Но не пугай, пожалуйста, автора форума. Не будет у него ничего тормозить. Тем более, что вопрос он задавал про циклы. И с ними не будет, и без них.

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Извлечение данных из MySQL при помощи PHP
« Ответ #9 : 16 Июля 2002, 22:40:17 »
Те я так понял если я в цикле раз сорок буду извлекать из MySQL у меня не будет ничего тормозить?...
Хотя в принцепе я вроде разобрался с этими запросами, с ними даже удобней.. чем если бы я всё это в цикле колбасил..
Мне тормоз послужил толчком...

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Извлечение данных из MySQL при помощи PHP
« Ответ #10 : 17 Июля 2002, 00:57:48 »
Блиин, начал дизайн у форума делать кое-что не нравится..
Вобщем мне надо дату из БД извлечь, примерно в таком формате: 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 раз изврантно...
Мне тормоз послужил толчком...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Извлечение данных из MySQL при помощи PHP
« Ответ #11 : 17 Июля 2002, 01:20:02 »
ты померяй, сколько миллисекунд будут выполняться эти два субстра даже при 400 циклах, и успокойся :-)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Извлечение данных из MySQL при помощи PHP
« Ответ #12 : 17 Июля 2002, 01:24:42 »
такой известный форум, как Phorum как раз в цикле данные извлекает. каждое сообщение - запрос.
MySQL оптимизирована для большого количества простых запросов.

простые же строковые операции - вообще за считанные такты исполняются.

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Извлечение данных из MySQL при помощи PHP
« Ответ #13 : 17 Июля 2002, 01:48:17 »
Сенкс... Будем делать...
Мне тормоз послужил толчком...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28