среда, 6 февраля 2013 г.

сколько строк в массиве

Модификация способа 4, основанная на выборе банеров не по значениям buid, а по диапазонам значений. РАССМОТРИМ. (См. пункт F).

Модификация способа 1, основанная на выборке банеров по случайно сгенерированному множеству значений в диапазоне от минимального до максимального значения поля b_uid. Это множество должно превосходить (иногда, значительно) количество показываемых банеров, т.к. может содержать значения поля b_uid, отсутствующие в БД в силу того, что такие банеры были удалены. РАССМОТРИМ. (См. пункт E).

Перенести логику определения случайного банера на уровень бизнес-логики приложения. Сначала получаем полный список имеющихся значений поля b_uid, а потом что-то с ним делаем. РАССМОТРИМ. (См. пункты B, C, D).

Выбрать несколько записей, отсортировав всю выборку в случайном порядке. Этот способ ОЧЕНЬ НЕ РЕКОМЕНДЕТСЯ специалистами по БД, но часто применяется на практике. РАССМОТРИМ. (См. пункт A).

Сгенерировать несколько случайных чисел в диапазоне от 1 до количества записей в таблице. НЕ ГОДИТСЯ. Высок риск попасть на "дырку" в последовательности значений первичных ключей, получившуюся из-за того, что какие-то банеры были удалены. Да, можно эти "дырки" устранять, но менять значение суррогатного первичного ключа — извращение. Однако, мы попробуем один хитрый способ (см. пункт E).

В связи с часто поступающими вопросами о том, как можно быстро и хорошо показать несколько случайных неповторяющихся записей из БД, рассмотрим классическую задачу: показ нескольких неповторяющихся банеров из множества имеющихся.

Показ случайных неповторяющихся записей из БД (MySQL + PHP)

Показ случайных неповторяющихся записей из БД (MySQL + PHP)

Комментариев нет:

Отправить комментарий