tolst
Новичок
Вопрос для ГУРУ PHP+MySQL (рандомный выбор)
Задача состаит вот в чем:
есть таблица к примеру вот:
Теперь нужно выбрать несколько, к примеру 3 случайные записи, делаем выборку стандартным методом:
в мысли приходит только вот что:
1) Использовать WHERE id IN(rand_id_1, rand_id_2, rand_id_3) - тогда запрос выполняется в разы быстрее, но как внутри одного запроса выявить эти случайные ID?
2) Использовать BETWEEN, тут опять же возникает вопрос, где же эти злополучные ранды брать внутри определенного промежутка ID
можно конечно использовать вложенный запрос (SELECT COUNT(*) FROM `random`), но это бляха муха тоже не совсем верно...
Просьба помогите, причем все нужно сделать в 1 запрос, таковы требования... это нечто типо теста...
Искал по форуму, находил подобные темы, но там нет ответа именно на эту задачу (в 1 запрос)...
Задача состаит вот в чем:
есть таблица к примеру вот:
далее запоняем её миллионом записей:CREATE TABLE `random` (
`id` int(10) NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
PRIMARY KEY (`id`)
);
PHP:
<?php
for ($i = 0; $i < 1000000; $i++){
mysql_query("INSERT INTO `random` ( `id` , `name` ) VALUES ('', '" . rand(0, 1000000) . "')");
}
?>
Данный SQL запрос работает более 2-х секунд, это согласитесь не есть гуд, нужно выбрать эти случайные записи как то иначе, так что бы было значительно быстрее, причем обязательно одним запросом!!!SELECT * FROM `random` ORDER BY RAND() LIMIT 3
в мысли приходит только вот что:
1) Использовать WHERE id IN(rand_id_1, rand_id_2, rand_id_3) - тогда запрос выполняется в разы быстрее, но как внутри одного запроса выявить эти случайные ID?
2) Использовать BETWEEN, тут опять же возникает вопрос, где же эти злополучные ранды брать внутри определенного промежутка ID
можно конечно использовать вложенный запрос (SELECT COUNT(*) FROM `random`), но это бляха муха тоже не совсем верно...
Просьба помогите, причем все нужно сделать в 1 запрос, таковы требования... это нечто типо теста...
Искал по форуму, находил подобные темы, но там нет ответа именно на эту задачу (в 1 запрос)...