Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Victor Wagner                        2:5020/400     23 Feb 2002  00:15:41
 To : Ruslan Bondarev
 Subject : Re: выборка случайной записи, учитывая приоритетность
 -------------------------------------------------------------------------------- 
 
  Ruslan Bondarev <Ruslan.Bondarev@p37.f327.n463.z2.fidonet.org>
  wrote:
  
 RB> Hello, All! 
  
 RB> В общем, такой вот дверной косяк: Есть набор записей в БД
 RB> (mySQL), каждая запись содержит поле "дата". Hужно выбрать
 RB> случайную запись, но если день месяца в сегодняшней дате и
 RB> день месяца в поле "дата" совпадают -- такая запись
 RB> получает более высокий приоритет (1:4, число в знаменателе
 RB> может быть любым). 
  
 RB> Как я решил: выборка всех записей -> засовывание
 RB> приоритетных записей несколько раз (в соотв. с
 RB> "валентностью" приоритета) -> случайный элемент массива.
 RB> База небольшая -- порядка 10 тыс. записей. Hо память жалко
 RB> еще со времен программирования на МК-61, да и способ, на
 RB> мой взгляд, слегка кривоват. Может быть решение похожей
 RB> задачи есть у Кнута? 
 
 Скорее у Селко. Который "SQL for smarties"
 Впрочем, у Селко будет решение на sql, надо на
 mSQL, в котором половины нормальных SQL-ных конструкций нема.
 
 Этот подход, впрочем, обсуждался в SU.DBMS.SQL не далее как неделю
 назад. groups.google.com is your friend.
 
 Что касается решения на эхотаге, то у Кернигана и Пайка описан 
 алгоритм, позволяющий вытащить из файла случайную строку не зная
 заранее количества строк в оном файле. 
 Идея простая.
 Помещаем в буфер первую строку файла, а затем для каждой следующей
 строки помещаем ее в буфер с вероятностью 1/$.
 
 По окончании чтения файла любая из строк имеет равную вероятность
 оказаться в буфере. Что тут надо умножить на 4 для того чтобы повысить
 вес некоторых строк - сам догадаешься.
 
 Впрочем, по-моему, памяти ты сэкономишь не более чем в двое. Hасколько
 я помню интерфейсы (C-шные) mSQL, клиентская библиотека при выполнении 
 запроса вытягивает
 весь результат в память, и только потом отдает его вызвавшей программе
 -- 
 Где запрещено смеяться, там обычно и плакать нельзя.
        --- С.Е. Лец
 --- ifmail v.2.15dev5
  * Origin: Free Net of Leninsky,45 (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 выборка случайной записи, учитывая приоритетность   Ruslan Bondarev   22 Feb 2002 20:33:27 
 Re: выборка случайной записи, учитывая приоритетность   Victor Wagner   23 Feb 2002 00:15:41 
 выборка случайной записи, учитывая приоритетность   Bulat Ziganshin   23 Feb 2002 00:50:51 
 выборка случайной записи, учитывая приоритетность   pavel kurnosoff   25 Feb 2002 01:17:30 
 выборка случайной записи, учитывая приоритетность   Ruslan Bondarev   26 Feb 2002 01:17:37 
 Re: выборка случайной записи, учитывая приоритетность   Igor Nikolaev   05 Mar 2002 17:39:34 
 выборка случайной записи, учитывая приоритетность   Ruslan Bondarev   06 Mar 2002 10:26:26 
 Re: выборка случайной записи, учитывая приоритетность   Igor Nikolaev   06 Mar 2002 20:06:42 
Архивное /ru.perl/151786bc747a2.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional