Здравствуйте.
Встала задача - сделать случайную выборку 10 строк из таблицы. В таблице пока мало записей, но вскоре она разрастётся до десятков тысяч. Дело осложняется тем, что есть дополнительное условие выборки, а также в id могут встречаться дыры. По сути сам запрос прост:
SELECT id, title, desc FROM my_table WHERE group_id=25 ORDER BY RAND() LIMIT 10;
Но в таком виде он в будущем, наверно, станет сильно грузить сайт...
Вопрос: посоветуйте, как лучше оптимизировать всё это дело?
Можно как с помощью sql, так и на php.
Заранее дико благодарен за помощь.
Примерно вот так:
SELECT id, title, desc
FROM my_table AS r1 JOIN
(SELECT CEIL(RAND() *
(SELECT MAX(id)
FROM my_table)) AS id)
AS r2
WHERE r1.id >= r2.id AND group_id=25
ORDER BY r1.id ASC
LIMIT 10
В моем случая в таблице с 8 миллионами записей отрабатывает за 202ms, когда с ORDER BY RAND()
за 15s
Оригинальный ответ от @Riedsio
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как выбрать все заказы пользователя с ид 12 за февраль? По идеи это делается через АПИКто нибуть подскажите
Настроил локально на денвере как описано здесь все отлично работает, письма уходят, все суперПеренес на хостинг пишет ошибку fsockopen(): unable...
Здравствуйте! Я новичок, и мне не понятно кое что по PHP, в частности помогите мне разобраться с тем, как осуществляется авторизация к API другого...
Всем привет, знаю что задаю может быть и глупый вопрос но информации не где не нашел, прошу строго не судить с php занимаюсь не давно, смысл...