Долго стал обрабатываться запрос к базе

Keron

Новичок
Долго стал обрабатываться запрос к базе

У меня таблица на 10000 записей.

Выборка из нее осуществляется рандомным способом:

SELECT * FROM table ORDER BY rand() LIMIT 5

Проблема заключается в том, что ранее вывод данных при этих же 10000 записях осуществлялся быстро (1-2 сек), а сейчас секунд 10 надо ждать.

В чем может быть проблема? Repair пробвал не помогает

Спасибо.
 

Sepuka

Новичок
http://www.phpclub.ru/talk/showthread.php?postid=817234#post817234
Попробовал ради интереса на таблице в 307 тыс строк, выполнялся ... минут 10 =)
Не проще взять
PHP:
SELECT MAX( `id` ) FROM `table`;
сгенерить случайное число и обратиться по нему к строке? Правда можно не попасть в строку если id удален, но это ведь не проблема.

-~{}~ 19.06.09 23:01:

осуществлялся быстро (1-2 сек)
это совсем не быстро
 

Keron

Новичок
Автор оригинала: Sepuka
http://www.phpclub.ru/talk/showthread.php?postid=817234#post817234
Попробовал ради интереса на таблице в 307 тыс строк, выполнялся ... минут 10 =)
Не проще взять
PHP:
SELECT MAX( `id` ) FROM `table`;
сгенерить случайное число и обратиться по нему к строке? Правда можно не попасть в строку если id удален, но это ведь не проблема.

-~{}~ 19.06.09 23:01:


это совсем не быстро
Да спасибо, хорошая идея, правда небольшлй нюанс есть: если limit 10 к примеру, то надо будет 10 раз в цикле rand() запускать.

По поводу 1-2 секунд, я имел в виду скорость отображения в моем браузере, а сам запрос выполнялся где-то 0,02 сек.

Я нашел решение проблемы - http://habrahabr.ru/blogs/mysql/55864/.

Рандомная выборка теперь ведется не среди 10 тыс строк а среди всего 200. Теперь странички грузятся быстро, запрос выполняется за 0,0022.

Всем спасибо!

-~{}~ 20.06.09 16:59:

спасибо за линк, изучу
 

zerkms

TDD infected
Команда форума
флоппик
ололо?

выбери-ка 1 случайную запись из таблы со следующим набором:

id
----------
1
100000
100000000


м?
 

Lightning

Трудоголик
да, тут нужен union 5-и селектов. ORDER BY rand() - жутко медленная вещь, которая еще и жрет много памяти.
 
Сверху