Top.Mail.Ru
Ответы
Аватар пользователя
14лет
Изменено

Вопрос по оптимизации запросов к MySQL

Дополнен

имеется база примерно на 100 тысяч записей, каждая запись состоит из двух числовых полей. требуется получить две случайных записи из базы.

как правильно сделать:
1. Делать три запроса: первый 1 узнаем кол-во записей всего, далее еще одним запросом получаем две записи условием WHERE
2. делаем один запрос, получаем все записи и там выбираем 2 случайных.

какие варианты могут быть еще, при условии что посещаемость у проекта большая

Дополнен

ды вроде нашел что-то типа этого http://hudson.su/2010/09/16/mysql-optimizaciya-order-by-rand/

пытаюсь разобраться и оптимизировать под 2 записи

По дате
По рейтингу
Аватар пользователя
Профи
14лет

Лучше так:
SELECT * FROM table ORDER BY rand() LIMIT 2

Аватар пользователя
Ученик
14лет

ругаются на такой запрос в интернетах, говорят медленно... есть практика использования

Аватар пользователя
Гуру
14лет

Нельзя так делать на больших таблицах, вы убьете сервер! функция ранд в данной ситуации будет отрабатываться только тогда, когда будут собраны ВСЕ записи удовлетворяющие запросу, после чего только будет выбрана случайная строка.



Видео по теме