Вывод 3 рандомов из рекорд сета

Farsh

~ on ~ high ~ wave ~
Вывод 3 рандомов из рекорд сета

Есть такой запрос .
$query = "select * from tip1,tip2, base where tip1=tid1 and tip2=tid2 and t1=tid1 and look='1' order by rand() limit 3";

Меня волнует только order by rand() limit 3

В итоге получается рекорд сет , в котором id идут , например , 5 - 10 -11 -27 и тд .
Понятно что order by rand сортирует весь этот сет , и только потом выделяет 3 строки .
Это долго . Нужно как нить быстрее .
Генерировать рандомное число на пхп и вытаскивать 3 раза с лимитом 1 тоже не получится , так как ID идут не попорядку . Шо делать?

И такой вопрос , представим что есть рекордсет , который я получаю на пхп .
Ну как обычно , while тд и тп $id = $row['id'] ; Так вот , можно ли как нибудь получить таким образом какую нибудь рандомную строку ? Или это глупость ?

И ваще в mysql я слаб, не ругаццо плиз )
 

Фанат

oncle terrible
Команда форума
ты забыл написать одну мелочь.
в чем проблема.
 

Farsh

~ on ~ high ~ wave ~
*****
Отредактил
Gas
Тему читал ещё до создания темы , но там смысл какой , что получаешь кол-во строк , генерируешь число на пхп до этого количества , и вытаскиваешь из бд ближайшее с лимитом 1 .
Но тут то так не получится
 

Фанат

oncle terrible
Команда форума
долго - это сколько?
в этом долго виноват ранд или джойн?
 

Farsh

~ on ~ high ~ wave ~
*****
Есть рекорд сет . Рекорд сет в котором ID идут не попорядку .
Мне из этого рекордсета нужно вытащить 3 рандомные строки без "order by rand() limit 3" .

-~{}~ 20.12.07 15:20:

Человек сказал что нужно убрать и джойн , и ранд -.-
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Farsh
Выборка по рандому здесь обсуждалась миллон раз.

-~{}~ 20.12.07 14:24:

Поле вверху
поиск по RAND(*
 

Фанат

oncle terrible
Команда форума
Farsh
если тебе кто-то что-то сказал, то вот пусть ОН тебя и консультирует.
а здесь надо задавать вопросы, которые ты САМ понял, и понимаешь их смысл
 

fixxxer

К.О.
Партнер клуба
товарищи! где-нибудь есть faq по explain, чтобы в него тыкать? :)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Человек сказал что нужно убрать и джойн , и ранд -.-
Скорее всего имелось ввиду
ORDER BY RAND()

1. SELECT MAX(id) FROM table
2. SELECT field FROM table WHERE id >= (RAND()*$max_id) LIMIT 1 + UNION

-~{}~ 20.12.07 14:30:

fixxxer
Есть статья. Правда там, как некоторые любят, не разжевано.
http://phpclub.ru/detail/article/mysql_optimize
 

Farsh

~ on ~ high ~ wave ~
*****
У меня ситуация совершенно другая , не буду описывать , но срочно была нужна помощь . Если бы все было гладко , я бы сначала как минимум 3 дня поломал бы голову , перечитал все что можно , а потом написал сюда .
Mr_Max
Большой спасибо , как раз сидел ковырялся с I*RAND()
А чтобы вытащить 3 рандомные строки , можно как нибудь обойтись без UNION ?

-~{}~ 20.12.07 15:44:
 
Сверху