RAND() выполняется после условия?

Virtus1k

Новичок
RAND() выполняется после условия?

Привет.
Есть таблица (100К записей)... нужно сделать случайную выборку (по условию `ab`='1'). Таких записей около 50... Знаю, что при использовании mysql RAND() копирует все записи во временную таблицу с новым полем и по этому полю отбирает уже... Так вот в чем вопрос...
мускул копирует всю таблицу или же только записи отобранные по условию? т.е. 50 шт из 100 000.
Кто знает - подскажите, пожалуйста. Спасибо
 

MuXaJIbI41981

Новичок
можно создать индекс на ИД и это поле ... выбрать все ИД по этому полю ... так будет использоваться только индекс ... данные не затронуться ... потом выборать случайный в ПХП ... и уже потом сделать запрос по выбранной ИД
 

Фанат

oncle terrible
Команда форума
запусти EXPLAIN SELECT и тоже будешь знать.
50 записей можно отсортировать и в пхп
 

Virtus1k

Новичок
MuXaJIbI41981
Я понимаю :) Но вопрос чуток о другом... иммено как ведет себя RAND мне интересно
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Virtus1k
На сколько я помню, создастся временная таблица в 100к записей, оттуда выберутся нужные с лимитом, все будет тормозить

[upd]
ЗЫ: если выборка без индексов.
 

Gas

может по одной?
Нет, сначала выбирутся записи удовлетворяющие условию и толкьо потом будет сортировка. Если по `ab` есть индекс - скорость будет отличная.
 

Virtus1k

Новичок
Спасибо. По всей видимости копируются только после отбора!!!
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Нарыто в интернете, возможно кому-то будет интересно

http://stackoverflow.com/questions/1244555/how-can-i-optimize-mysqls-order-by-rand-function
 

Фанат

oncle terrible
Команда форума
До чего же пугает нашего ламера необходимость хоть что-то сделать своими руками.
 
Сверху