Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Sql
Новая тема
Ответить
цитата
24/10/08 в 19:12
freeek
правильно выполнить запрос к базе,
оператор Select,
смысл: выбрать случайным образом все значения из базы которые удовлетворяют условиям поиска,
в базе где то 1,5к записей
цитата
24/10/08 в 19:27
-=Faraon=-
я непонял чтото случайным образом выбрать все значения.. если и так все зачем случайным?! отрандомить выдачу ORDER BY RAND();
цитата
24/10/08 в 19:46
freeek
в теле ранд() пусто, или по определенному значению можно указать?
например что то типа ранд(`id`),
цитата
24/10/08 в 20:26
-=Faraon=-
http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand
цитата
25/10/08 в 08:45
_s_[sov]
ну если sql запрос принципиален то можно выплюнуть все значения а далее через php уже выбрать рандомные...
цитата
25/10/08 в 09:25
TRUE_AND_FALSE
_s_[sov]:
+1
Все значения удовлетворяющие поиск, а далее рандомно выбрать!
цитата
25/10/08 в 11:23
Имя
SELECT id, url, desc
FROM table
WHERE url LIKE '%porn%'
ORDER BY rand( )
цитата
25/10/08 в 11:42
freeek
ну в принципе да, можно и так
выбрать а потом пхп рандомно, просто с точки зрения производительности имеет смысл, хотя я думаю что сильно не скажется
цитата
27/10/08 в 18:27
zuborg
интересно, ответы изменились бы если бы было указано что условию будет удовлетворять не 1.5k а 1.5m записей
цитата
27/10/08 в 21:01
JM
В этом случае у тебя могла бы велететь ошибка что недостаточно памяти ;)
цитата
27/10/08 в 23:05
TRUE_AND_FALSE
JM писал:
В этом случае у тебя могла бы велететь ошибка что недостаточно памяти ;)
Просто сначало прописать функцию рондомирования, после делать выборку + эта функция. Можно облегчить работу с БД. А вообще лучше разбивать такие базы.
цитата
28/10/08 в 16:42
Formator
Что за функция рэндомирования? У мускуля нет толкового рэндома, даже на базе 1.5к он тормозит, а при мало-мальской нагрузке вешает всё.
Варианта три. Первый - делать RAND(`id`) Самый плохой вариант в силу описанных выше причин.
Второй - выгружать базу в скрипт и уже из скрипта делать выборку как хочется. Конечно, если база будет 1.5м и выше, то эта задача никак не для php.
Третий, самый оптимальный, если идентификаторы (поле `id`) записей идут попорядку. Тогда узнаётся общее количество записей (COUNT), после чего делается рэндом $id=rand(1,$count); и потом уже этот id спокойно выбирается с помощью SELECT .. WHERE id=$id
Ещё можно делать рэндом не в риалтайме, а раз в какой-то промежуток времени с помощью ORDER BY RAND
цитата
28/10/08 в 20:04
freeek
CJLOG писал:
Что за функция рэндомирования? У мускуля нет толкового рэндома, даже на базе 1.5к он тормозит, а при мало-мальской нагрузке вешает всё.
Варианта три. Первый - делать RAND(`id`) Самый плохой вариант в силу описанных выше причин.
Второй - выгружать базу в скрипт и уже из скрипта делать выборку как хочется. Конечно, если база будет 1.5м и выше, то эта задача никак не для php.
Третий, самый оптимальный, если идентификаторы (поле `id`) записей идут попорядку. Тогда узнаётся общее количество записей (COUNT), после чего делается рэндом $id=rand(1,$count); и потом уже этот id спокойно выбирается с помощью SELECT .. WHERE id=$id
Ещё можно делать рэндом не в риалтайме, а раз в какой-то промежуток времени с помощью ORDER BY RAND
все верно, 3й оптимальный, так и поступил
цитата
28/10/08 в 23:28
TRUE_AND_FALSE
CJLOG:
Вот в совем посте это я и имел введу, только выразился не правельно!
цитата
29/10/08 в 13:39
zuborg
вариант третий правильный, но не универсальный
а универсальный это использовать директиву offset N limit 1;
где N - случайное число от 0 до total_size - 1
Новая тема
Ответить
Эта страница в полной версии