С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 24/10/08 в 19:12 |
правильно выполнить запрос к базе,
оператор Select,
смысл: выбрать случайным образом все значения из базы которые удовлетворяют условиям поиска,
в базе где то 1,5к записей
|
|
x100BTC.com Промокод SudDude009 подключить бесплатно и навсегда.
|
0
|
|
|
С нами с 19.10.05
Сообщения: 351
Рейтинг: 755
|
Добавлено: 24/10/08 в 19:27 |
я непонял чтото случайным образом выбрать все значения.. если и так все зачем случайным?! отрандомить выдачу ORDER BY RAND();
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 24/10/08 в 19:46 |
в теле ранд() пусто, или по определенному значению можно указать?
например что то типа ранд(`id`),
|
|
x100BTC.com Промокод SudDude009 подключить бесплатно и навсегда.
|
0
|
|
|
С нами с 19.10.05
Сообщения: 351
Рейтинг: 755
|
Добавлено: 24/10/08 в 20:26 |
|
|
|
|
php
С нами с 09.10.06
Сообщения: 3706
Рейтинг: 2410
|
Добавлено: 25/10/08 в 08:45 |
ну если sql запрос принципиален то можно выплюнуть все значения а далее через php уже выбрать рандомные...
|
|
|
|
С нами с 03.10.08
Сообщения: 129
Рейтинг: 141
|
Добавлено: 25/10/08 в 09:25 |
_s_[sov]: +1
Все значения удовлетворяющие поиск, а далее рандомно выбрать!
|
|
|
|
С нами с 22.08.05
Сообщения: 530
Рейтинг: 801
|
Добавлено: 25/10/08 в 11:23 |
SELECT id, url, desc
FROM table
WHERE url LIKE '%porn%'
ORDER BY rand( )
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 25/10/08 в 11:42 |
ну в принципе да, можно и так
выбрать а потом пхп рандомно, просто с точки зрения производительности имеет смысл, хотя я думаю что сильно не скажется
|
|
x100BTC.com Промокод SudDude009 подключить бесплатно и навсегда.
|
0
|
|
|
С нами с 01.02.07
Сообщения: 231
Рейтинг: 294
|
Добавлено: 27/10/08 в 18:27 |
интересно, ответы изменились бы если бы было указано что условию будет удовлетворять не 1.5k а 1.5m записей
|
|
|
|
С нами с 08.02.03
Сообщения: 10564
Рейтинг: 5962
|
Добавлено: 27/10/08 в 21:01 |
В этом случае у тебя могла бы велететь ошибка что недостаточно памяти ;)
|
|
|
|
С нами с 03.10.08
Сообщения: 129
Рейтинг: 141
|
Добавлено: 27/10/08 в 23:05 |
JM писал: | В этом случае у тебя могла бы велететь ошибка что недостаточно памяти ;) |
Просто сначало прописать функцию рондомирования, после делать выборку + эта функция. Можно облегчить работу с БД. А вообще лучше разбивать такие базы.
|
|
|
|
С нами с 03.05.07
Сообщения: 801
Рейтинг: 825
|
Добавлено: 28/10/08 в 16:42 |
Что за функция рэндомирования? У мускуля нет толкового рэндома, даже на базе 1.5к он тормозит, а при мало-мальской нагрузке вешает всё.
Варианта три. Первый - делать RAND(`id`) Самый плохой вариант в силу описанных выше причин.
Второй - выгружать базу в скрипт и уже из скрипта делать выборку как хочется. Конечно, если база будет 1.5м и выше, то эта задача никак не для php.
Третий, самый оптимальный, если идентификаторы (поле `id`) записей идут попорядку. Тогда узнаётся общее количество записей (COUNT), после чего делается рэндом $id=rand(1,$count); и потом уже этот id спокойно выбирается с помощью SELECT .. WHERE id=$id
Ещё можно делать рэндом не в риалтайме, а раз в какой-то промежуток времени с помощью ORDER BY RAND
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 28/10/08 в 20:04 |
CJLOG писал: | Что за функция рэндомирования? У мускуля нет толкового рэндома, даже на базе 1.5к он тормозит, а при мало-мальской нагрузке вешает всё.
Варианта три. Первый - делать RAND(`id`) Самый плохой вариант в силу описанных выше причин.
Второй - выгружать базу в скрипт и уже из скрипта делать выборку как хочется. Конечно, если база будет 1.5м и выше, то эта задача никак не для php.
Третий, самый оптимальный, если идентификаторы (поле `id`) записей идут попорядку. Тогда узнаётся общее количество записей (COUNT), после чего делается рэндом $id=rand(1,$count); и потом уже этот id спокойно выбирается с помощью SELECT .. WHERE id=$id
Ещё можно делать рэндом не в риалтайме, а раз в какой-то промежуток времени с помощью ORDER BY RAND |
все верно, 3й оптимальный, так и поступил
|
|
x100BTC.com Промокод SudDude009 подключить бесплатно и навсегда.
|
0
|
|
|
С нами с 03.10.08
Сообщения: 129
Рейтинг: 141
|
Добавлено: 28/10/08 в 23:28 |
CJLOG: Вот в совем посте это я и имел введу, только выразился не правельно!
|
|
|
|
С нами с 01.02.07
Сообщения: 231
Рейтинг: 294
|
Добавлено: 29/10/08 в 13:39 |
вариант третий правильный, но не универсальный
а универсальный это использовать директиву offset N limit 1;
где N - случайное число от 0 до total_size - 1
|
|
|
|