Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Собственно вопрос в заголовке: как грамотнее всего в плане быстродействия организовать выборку 3-х случайных строк из таблицы?
Структура таблицы comments:
Отредактированно valetrammstein (19.06.2011 00:55:44)
Неактивен
Лучше так:
Неактивен
Пробовал перемешивать, действительно на больших наборах данных перемешка id выполняется практически мгновенно.
Еще такое, стоит ли заморачиваться, если таблица до 1000 записей?
Неактивен
Даже для 1000 сортировка текстов может быть долгой. Все зависит от объема данных, хранимого в text-поле.
Неактивен
rgbeast написал:
Даже для 1000 сортировка текстов может быть долгой. Все зависит от объема данных, хранимого в text-поле.
varchar(150)
Неактивен
У меня пока на php сделано так:
Неактивен
Что-то типа такого:
Неактивен
Спасибо большое. Отлично работает ваш код.
Возникает только мой вопрос дилетанта, а не будет ли это дольше выполняться на уровне PHP. Я понимаю, что для mysql этот вариант проще, а вот не получится ли проигрыш, так для php код получился посложнее. Или это настолько незначительная деталь, что нею можно пренебречь?
Неактивен
Здесь принцип такой - оптимизируют, когда что-то медленно. То есть если запрос ORDER BY RAND() будет действительно заметно медленным (а он таким бывает), то разбиваете запрос на два - все потери от этого будут незаметны по сравнению с исходным реально медленным запросом.
Неактивен
Понятно, просто рчень сложно оценить производительность - и так и так очень быстро.
Неактивен
Преждевременная оптимизация - корень всех зол. Иначе говоря, если нет проблемы, то не надо ее решать
В вашем случае добавьте в таблицу в 100 раз больше записей и увидите разницу.
Неактивен
rgbeast написал:
В вашем случае добавьте в таблицу в 100 раз больше записей и увидите разницу.
Спасибо за наводку - сейчас так и сделаю.
Неактивен
Сделал 100000 записей в таблице. Все равно оба варианта работают без видимой задержки. Поэтому считаю, что даже первоначальный вариант с простым ORDER BY нормальный.
Но тем не менее, большое спасибо за помощь.
Неактивен
Страниц: 1