Sql.RU

Сайт SQL.ru — сборище непрофессиональный статей на тему разнообразных СУБД. Никакого отбора. Два примера:

Статья о поиске на базе PHP и MySQL [ <<> ]
Ни слова о mnogosearch, поиске по релевантности в MySQL (тут можно простить — возможно статья старая), ereg_replace, mysql_result и прочее.

Статья «Случайный выбор записей из базы данных с помощью PHP» [ <<> ]
Чем автора не устроил mysql_data_seek(случайное_число) или SELECT * FROM table ORDER BY rand() LIMIT сколько_там_надо? Загадка.

27 октября 2003 17:30

said (инкогнито)
28 октября 2003, 16:55

SELECT * FROM table ORDER BY rand().
Пробовали. Оказалось, что ВОЗМОЖНЫ ситуации, когда на статистически значимой выборке НЕКОТОРЫЕ записи не выбираются то есть ВООБЩЕ :)

В самом деле, там, видимо, не раномерное распределение, а какое-то другое, недокументированное…

А вот mysql_data_seek — самое оно. Ну, правда, лишний запрос на вычисление количества записей, но это всего 2 запроса, причем всегда, а не N…

bolk (bolknote.ru)
28 октября 2003, 16:55, ответ предназначен said

Если выбирать всю таблицу, а потом делать mysql_data_seek, то кол-во строк можно узнать — mysql_num_rows. Иначе можно сначала SELECT COUNT(*) FROM, потом — SELECT * FROM … LIMIT n,m.

detail (инкогнито)
28 октября 2003, 21:23

ORDER BY rand(). Отличный способ положить сервер. Открываем страницу с этим скриптом в нескольких окнах, и, если записей много, серверу поплохеет.

bolk (bolknote.ru)
28 октября 2003, 21:23, ответ предназначен detail

Отчего ему поплохеет? Обоснование?

detail (инкогнито)
28 октября 2003, 21:31

Как отчего! rand надо считать для всех рядов таблицы. При этом в твоём запросе всю * надо грузить в память.

bolk (bolknote.ru)
28 октября 2003, 21:31, ответ предназначен detail

Я же не предлагаю использовать его везде и всюду. Представь, что в таблице порядка 10—50 строк.

Есть другие способы — LIMIT m,n, mysql_data_seek. Я о них упоминал.

detail (инкогнито)
28 октября 2003, 21:35

Тогда нет возражений. Просто, не глядя на ссылку, можно подумать, что ты рекомендуешь это к любой случайной выборке.

bolk (bolknote.ru)
28 октября 2003, 21:35, ответ предназначен detail

Нет, конечно :) Там же упомянут как минимум mysql_data_seek :)

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)