Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
замечание про один вопрос/ответ из FAQ (Misha v.3) 04/11/2004 - 20:17:34
      Re: замечание про один вопрос/ответ из FAQ (Dinky) 04/11/2004 - 23:41:19
      Re: тут не столько их "ум" виноват. (Misha v.3) 05/11/2004 - 09:37:37
      Re: тут не столько их (walrus) 05/11/2004 - 14:07:39
      Re: в текущей доке есть замечание об этом (Misha v.3) 05/11/2004 - 14:42:54
      Re: не-а (Dinky) 05/11/2004 - 21:05:29

> Original message text:
> From: Misha v.3 - 04/11/2004 - 20:17:34
> Subject:замечание про один вопрос/ответ из FAQ
> -----------------
> про этот:
> Q. Как получить случайный ряд из таблицы MySQL?
> SELECT * FROM table ORDER BY RAND() LIMIT 1;
>
> да, я знаю что это есть и в документации по MySQL, но этот запрос УЖАСЕН, и я до сих пор не могу понять как его могли поместить в документацию без больших красных букв что его можно применять лишь при маленьком количестве записей в таблице.
>
> Этот запрос для КАЖДОЙ строки таблицы выполняет RAND, далее сортирует строки в соответствии с результатами, и лишь потом отдает ОДНУ запись. filesort обеспечен на 100%
> При наличии в табличке большого количества записей это ОЧЕНЬ медленно.
>
> Значительно быстрее сделать два запроса:
> SELECT RAND(COUNT(*)) FROM table
> SELECT * FROM table LIMIT что_вернул_1_запрос,1
>
>


From: Dinky - 04/11/2004 - 23:41:19
Subject:замечание про один вопрос/ответ из FAQ
-----------------
угу, а как я ругался на местных девелоперов, которые от большого "ума" позасовывали это в production :->

> SELECT * FROM table LIMIT что_вернул_1_запрос,1
я бы даже предложил primary key, чтоб на диск не лез:
SELECT id FROM table ORDER BY id LIMIT что_вернул_1_запрос,1
а потом по id пусть тягяет что ему надо :)

--
Dmitry



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
18342



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |