|
|
|
| Доброй ночи!
Есть простая табличка,
и не очень простая задачка как кажется на первый взгляд.
Необходимо делать выборку случайных записей из базы.
Есть два важных момента:
1) получаемые записи не должны повторятся. В случае если законичлись уникальные записи ничего не возвращать.
2) idшники могут быть разряженными.
Решение которое приходит в голову - хранить использованные идшники в другой табличке и при выборке сверять не использован ли элемент, не совместим с понятием производительность.
Собственно нужен совет, как эффекетивней это можно реализовать. | |
|
|
|
|
|
|
|
для: Васильда
(22.02.2012 в 03:40)
| |
$query="SELECT * FROM table
ORDER by rand()
LIMIT 3";
|
сделает уникальную и случайную выборку без повторов. | |
|
|
|
|
|
|
|
для: СтепаныЧ
(22.02.2012 в 05:59)
| | ORDER by rand() - сколько уже статей писали что лучше не использовать его из-за тормозов. | |
|
|
|
|
|
|
|
для: ololosha
(22.02.2012 в 15:30)
| | ну если без условия и при огромной таблице, то да, а так иногда другого варианта нет | |
|
|
|
|
|
|
|
для: Васильда
(22.02.2012 в 03:40)
| | если вам нужно перебрать всю базу без повторений, то без хранения идишников в другом месте не обойтись
и почему вы думаете что с производительностью будут какие-то проблемы?
в процессе работы удаление вставка в базу имеет место быть?
ну и если не секрет в целом код это реклама или тесты?
___
и кстати для вопросов по MySQL есть соответствующий раздел, так вопросы быстрее находят отвечающих | |
|
|
|