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`),
цитата
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 записей icon_wink.gif
цитата
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


Эта страница в полной версии