Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: mysql_result и mysql_fetch_array
 
 автор: irr   (24.10.2005 в 14:43)   письмо автору
 
 

заменил в скрипте функцию mysql_result на mysql_fetch_array как теоретически более быструю. но скрипт после этого стал работать раза в 3 медленнее, чем раньше. пожалуйста, подскажите, что я не так сделал, и как сделать лучше? может быть я поступил неправильно, внеся обращение к базе в цикл?

кусок скрипта до замены:

$query="SELECT date_pub, theme, quest FROM faq WHERE from='$from' ORDER BY quest_id DESC LIMIT $start, $limit";
$result=mysql_query($query);
$num=mysql_num_rows($result);

for ($i=0;$i<$num;$i++)
{ $date=mysql_result($result,$i,"date_pub");
  $theme=mysql_result($result,$i,"theme");
  $quest=mysql_result($result,$i,"quest");
  $list=$list."$date <b>$theme</b><br> $quest<br>\n";
}


кусок скрипта после замены (работает медленнее):

$query="SELECT quest_id FROM faq LIMIT $start, $limit";
$result=mysql_query($query);
$num=mysql_num_rows($result);

for ($i=0;$i<$num;$i++)
{ $st = $start + $i;
  $query="SELECT date_pub, theme, quest FROM faq WHERE from='$from' ORDER BY quest_id DESC LIMIT $st, 1";
  $result=mysql_query($query);
  $fetch=mysql_fetch_array($result);
  $date=$fetch['date_pub'];
  $theme=$fetch['theme'];
  $quest=$fetch['quest'];
  $list=$list."$date <b>$theme</b><br> $quest<br>\n";
}

   
 
 автор: DDK   (24.10.2005 в 15:43)   письмо автору
 
   для: irr   (24.10.2005 в 14:43)
 

Всё действительно гораздо проще:

<?
$query
="SELECT date_pub, theme, quest FROM faq WHERE from='$from' ORDER BY quest_id DESC LIMIT $st, 1";
$result mysql_query($query);
$list "list contetents"// Эта переменная должна быть объявлена заранее...
WHILE ($resarray mysql_fetch_array($result)) {   
  
$date=$resarray['date_pub']; 
  
$theme=$resarray['theme']; 
  
$quest=$resarray['quest']; 
  
$list=$list."$date <b>$theme</b><br> $quest<br>\n"
}
?>

   
 
 автор: irr   (24.10.2005 в 16:42)   письмо автору
 
   для: DDK   (24.10.2005 в 15:43)
 

спасибо большое! Ваш пример работает.

я замерил через microtime() - скорость работы этого скрипта точно такая же, как и при использовании функции mysql_result. mysql_fetch_array ее не обгоняет-таки. хотя это не принципиально. но почему тогда в теории mysql_fetch_array считается быстрее?

   
 
 автор: DDK   (24.10.2005 в 17:36)   письмо автору
 
   для: irr   (24.10.2005 в 16:42)
 

Вы замеряете на очень коротких дистанциях... попробуйте замерить на объёме запроса мегабайт эдак в 5...

   
 
 автор: cheops   (24.10.2005 в 19:31)   письмо автору
 
   для: irr   (24.10.2005 в 14:43)
 

Так у вас во втором болке на каждом цикле выволняется запрос mysql_query(), а в первом нет - поэтому и в три раза дольше...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования