SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 03/04/08 в 17:36 |
В базу mysql забиты урлы сайтов.
Можно ли составить запрос таким образом что бы из 100 имеющихся выбрать скажем 5 случайным образом?
Код: | $sites = mysql_query("SELECT * FROM sites"); |
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
С нами с 03.07.05
Сообщения: 474
Рейтинг: 231
|
Добавлено: 03/04/08 в 17:40 |
Можно. Используя Limit и Rand. Но не советую так делать, так как Rand уж очень сильно грузит мускуль. Особенно при больших таблицах. Поэтому лучше выбирать случайно через php.
SELECT `url` FROM `urls` ORDER BY RAND LIMIT 5
|
|
PROMO!!! Free Dedicated servers! Send me PM.
Dedicated servers in Europe (DE,NL,RO) and USA from 39$.
|
6
|
|
|
С нами с 03.07.05
Сообщения: 474
Рейтинг: 231
|
Добавлено: 03/04/08 в 17:41 |
Для php:
array_rand — Выбрать одно или несколько случайных значений из массива
|
|
PROMO!!! Free Dedicated servers! Send me PM.
Dedicated servers in Europe (DE,NL,RO) and USA from 39$.
|
6
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 03/04/08 в 17:43 |
для пхп всмысле выгрузить результат в массив и уже потом рэндомно выдергивать? какой то кривой вариант
п.с. а вообще наверное так и сделаю, вначале получу айдишники записей в массив, а потом уже выдернув случайные номера сделаю новый запрос
биг сэнкс за помощь
Последний раз редактировалось: Lamagro (03/04/08 в 17:50), всего редактировалось 1 раз
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
С нами с 03.07.05
Сообщения: 474
Рейтинг: 231
|
Добавлено: 03/04/08 в 17:49 |
Lamagro писал: | для пхп всмысле выгрузить результат в массив и уже потом рэндомно выдергивать? какой то кривой вариант |
Кривой - но будет работать быстрее на больших таблицах. А вообще кто мешает попробовать оба? ;)
|
|
PROMO!!! Free Dedicated servers! Send me PM.
Dedicated servers in Europe (DE,NL,RO) and USA from 39$.
|
6
|
|
|
продаю базы адалт кейвордов
С нами с 09.11.02
Сообщения: 9045
Рейтинг: 3772
|
Добавлено: 03/04/08 в 17:50 |
select sites.*,rand() as ordf from sites order by ordf limit 0,5
|
|
сдам подпись, стучите в личку
|
6
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 03/04/08 в 17:55 |
netzoner писал: | Для php:
array_rand — Выбрать одно или несколько случайных значений из массива |
в таком случае нужно вносить в массив все значения из базы, а это может оказатся не очень при больших объемах.
|
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 03/04/08 в 17:55 |
ivango писал: | select sites.*,rand() as ordf from sites order by ordf limit 0,5 | неврубился
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 03/04/08 в 17:57 |
_s_[sov] писал: | в таком случае нужно вносить в массив все значения из базы, а это может оказатся не очень при больших объемах. |
потому он кривым и кажется
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
продаю базы адалт кейвордов
С нами с 09.11.02
Сообщения: 9045
Рейтинг: 3772
|
Добавлено: 03/04/08 в 17:59 |
Lamagro писал: | неврубился |
чего не врубился?
Это запрос, который выдает из таблицы sites 5 записей случайным образом... я его проверил, работает.
|
|
сдам подпись, стучите в личку
|
6
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 03/04/08 в 18:04 |
ivango писал: | чего не врубился?
Это запрос, который выдает из таблицы sites 5 записей случайным образом... я его проверил, работает. |
у меня тоже работает
а что не врубился - опыта маловато - сижу с синтаксисом разбираюсь
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 03/04/08 в 18:06 |
да кстати - спасибо за помощь
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
« ... full on ... »
С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686
|
Добавлено: 03/04/08 в 19:15 |
На заметку, добавлю - ORDER BY RAND довольно ресурсоёмкий уже при сравнительно небольшом кол-ве записей, а также при большом кол-ве соединений.
C другой стороны, при тех же показателях (кол-во записей и запросов) целый лишний запрос + засор памяти (кучей IDшников) тож не лучший вариант.
В идеале можно сделать, чтобы ID всех сайтов хранилось в переменной в виде массива, периодически обновляясь, а оттуда уже через array_rand выбирались ID, потом запрос к базе через WHERE ID IN (1,23,435,21,9).
Правда, это всё проблемы больших объёмов и нагрузок, а так оба первых варианта хороши, только с ORDER BY RAND мороки меньше.
|
|
|
|
саблезубый кролик
С нами с 02.07.05
Сообщения: 2966
Рейтинг: 993
|
Добавлено: 03/04/08 в 20:10 |
Код: |
$maxid=mysql_fetch_field(mysql_query('select max(id) as maxid from sites'));
for($i=0;$i<=4;$i++) {
$siteid[]=rand(1,$maxid)
}
$ids=implode(',',$siteid);
$result=mysql_query("select * from sites where id IN ($ids)"));
|
так пооптимальней будет если нету пропусков в таблице.
|
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 03/04/08 в 22:36 |
Lamagro писал: | п.с. а вообще наверное так и сделаю, вначале получу айдишники записей в массив, а потом уже выдернув случайные номера сделаю новый запрос |
Самый оптимальный вариант.
|
|
|
|
саблезубый кролик
С нами с 02.07.05
Сообщения: 2966
Рейтинг: 993
|
Добавлено: 04/04/08 в 00:12 |
Это с каких пор дергать сто строк стало оптимальнее чем одну max по primary ключу?
|
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 04/04/08 в 06:05 |
Gourad писал: | так пооптимальней будет если нету пропусков в таблице. |
В том то и дело что пропуски есть, с базой работают - что то удаляют что то добавляют и таким образом запросто можно нарваться на несуществующий элемент. А в массив делать всетаки не очень хотелось бы... количество записей в таблице будет увеличиваться, а выбирать нужно примерно постоянное число
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|
саблезубый кролик
С нами с 02.07.05
Сообщения: 2966
Рейтинг: 993
|
Добавлено: 04/04/08 в 13:10 |
Lamagro писал: | А в массив делать всетаки не очень хотелось бы... количество записей в таблице будет увеличиваться, а выбирать нужно примерно постоянное число |
Как вариант, сделай дополнительный индекс без пропусков, и перестраивай при удалении по триггеру AFTER DELETE. Конешно это не совсем правильно с точки зрения нормализации, но лучше чем выдирать 100К записей в массив который потом сортировать.
|
|
|
|
SexBlogs.Name
С нами с 13.10.03
Сообщения: 3159
Рейтинг: 962
|
Добавлено: 06/04/08 в 06:27 |
пока сделал через массив - увеличится нагрузка - буду думать
спасибо за помощь
|
|
Submit your blog to the sex blogs list. PR=3 Quickly approve! 10 posts min. Ping every 6 hour!
|
0
|
|
|