Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица, строки которой нужно выводить в php-страницу каждый раз в разном порядке. Слышал, что на больших таблицах rand() сильно тормозит. Планируется, что в таблице будет больше 100 тысяч записей - это уже большая таблица, или еще нет? И какие есть варианты для ускорения?
Неактивен
мне не по одной строке надо, а все, с постраничной разбивкой (допустим, по 50 штук на страницу)
идентификаторы не по порядку, вернее, могут периодически возникать пропуски штук по 100-200
Неактивен
И при этом в случайном порядке? И при этом дублироваться не должны?
Ну тогда SELECT id ORDER BY RAND(), запомнить в сессии, и выводить постранично.
Но вообще, не могу себе представить, кому может понадобиться такая организация
данных.
UPD: Кстати, может оказаться полезным не выбирать сразу все строки, а выбирать
первую страницу, запоминать id, потом выбирать вторую (если спросят). Есть шанс,
что все данные выбирать не прийдется.
Неактивен
Это большой каталог товаров от разных магазинов, нужно, чтоб они выводились не в алфавитном порядке, а всегда по-разному, чтоб магазины были в одинаковых условиях (разумеется, когда не выбрана сортировка по цене). Другого способа организовать в голову не приходит.
Когда посетитель находится внутри какой-нибудь категории товара - там и обычный rand() сработает, не так уж много товаров. Но когда в корневом разделе - там нужно выводить полный список с постраничной разбивкой :-(
Как вариант - может раз в час генерировать табличку с идентификаторами в случайном порядке?
Неактивен
Ну, например, так. В любом случае — тогда запоминать per-user не нужно, это упрощает ситуацию.
Кстати, обычно все товары не выводят, в этом нет смысла, выведите одну страницу.
Неактивен
а остальные как и куда?
Неактивен
А остальные не выводить. А когда человек уже определится с тем, какой товар его
интересует, — тогда уже постранично.
Неактивен
Кстати да! На главной выводить самые популярные товары - и все!
Спасибо за идею!
Неактивен