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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Случайная выборка из базы данных

Сообщения:  [1-6] 

 
 автор: Trianon   (17.12.2007 в 11:40)   письмо автору
 
   для: Jaroslav   (17.12.2007 в 08:08)
 

Вы не написали, как выводите записи.
Но полагаю, что если
а) не пытаться всякий раз читать таблицу (целиком между прочим)
и
б) вместо 20 запросов в цикле делать только один,
то нагрузка уменьшится прилично.

Может слегка вырасти сложность процедуры добавления/удаления имен. Это частые процедуры?

   
 
 автор: Jaroslav   (17.12.2007 в 08:08)   письмо автору
 
   для: Trianon   (16.12.2007 в 13:40)
 

Подскажите, пожалуйста, а это приведет к уменьшению нагрузки на базу данных?
Какие еще есть способы ее оптимизации?

   
 
 автор: Trianon   (16.12.2007 в 13:40)   письмо автору
 
   для: Jaroslav   (16.12.2007 в 13:37)
 

То назначать последней (по sn) оставшейся записи sn от удаляемой.

   
 
 автор: Jaroslav   (16.12.2007 в 13:37)   письмо автору
 
   для: Trianon   (16.12.2007 в 12:46)
 

А если какие-то записи удалены?

   
 
 автор: Trianon   (16.12.2007 в 12:46)   письмо автору
 
   для: Jaroslav   (16.12.2007 в 12:01)
 

в принципе, можно добавить столбик с последовательным порядковым номером sn [1 ... число_строк], чтобы исключить чтение первичных ключей.

А при выводе использовать конструкцию WHERE sn IN ('$list') ORDER BY FIND_IN_SET(sn,'$list')
где $list - список номеров, перечисленных через запятую.

   
 
 автор: Jaroslav   (16.12.2007 в 12:01)   письмо автору
 
 

Здравствуйте!

Вот такая возникла ситуация.
В базе данных ~ 4000 записей (и постоянно увеличиваются).
Надо их вывести на сайте по 20 штук на странице, но в СЛУЧАЙНОМ порядке. И так, чтобы одинаковые записи на разных страницах не повторялись.

Подскажите, пожалуйста, как это реализовать таким образом, чтобы уменьшить нагрузку на базу данных?

Я, например, сначала считываю всю базу:

$prosmotr_categories ="SELECT * FROM name ORDER BY RAND()";
$resurs_catU=mysql_query($prosmotr_categories);
$rows=mysql_num_rows($resurs_catU);

Потом прохожу ее циклом FOR и сохраняю в сессию ID полей:

for ($g=0; $g<$rows; $g++)
{
@session_register("session_users");
@$reed_rows=mysql_fetch_array($resurs_catU);
$session_users[]=$reed_rows[0];
}


И затем, зная ID полей и общее количество строк, вывожу их по 20 штук на странице.
Можно ли каким-либо образом это оптимизировать?

Заранее благодарю,
Ярослав.

   

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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