Re: Поиск ближ
От | Teodor Sigaev |
---|---|
Тема | Re: Поиск ближ |
Дата | |
Msg-id | 4253E374.5030003@sigaev.ru обсуждение исходный текст |
Ответ на | Re: Поиск ближайшего (Oleg Bartunov <oleg@sai.msu.su>) |
Список | pgsql-ru-general |
Oleg Bartunov wrote: > On Wed, 6 Apr 2005, Oleg Bartunov wrote: > >> On Wed, 6 Apr 2005, Evgeny M. Baldin wrote: >> >>> >>> calibrations=# EXPLAIN ANALYZE select begintime from vepp4current_key >>> where begintime<'yesterday' order by begintime limit 1; >>> > > кстати, а сколько всего записей без ' limit 1' ? > Если там много, то чудес нет, сортировать десятки тысяч записей требуется > время. Поэтому тебе надо использовать range, т.е. задать разумный нижний > предел и не париться. Это дело приложения и серого вещества > разработчиков приложения. > Постгрес умнее, в данном случае он не сортирует, он пользуетсся свойством индекса: при линейной выборке из индекса данные уже сортированы. > > Другое дело, и мы пару раз этот вопрос поднимали, что limit на самом деле > является синтаксической затычкой, т.е. все вытаскивается, сортируется > согласно order by, а потом тупо и грязно вытаскиваются необходимые данные. > На самом деле, все можно делать по уму, т.е. использовать partial sort, > например, в твоей задаче надо вытащить только 1 строчку, а про все > остальные > тебе совсем не важно, поэтому и сортировку можно остановить. > Есть и еще алгоритмы. А ключевым словом, к твоей задаче является > 'top-k query' и на этк тему написаноо куча работ. Мы с Федей Сигаевым > года три назад даже патч сделали, но тогда его не приняли из-за его > плохой реализации. > > > > >> > > Regards, > Oleg > _____________________________________________________________ > Oleg Bartunov, sci.researcher, hostmaster of AstroNet, > Sternberg Astronomical Institute, Moscow University (Russia) > Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ > phone: +007(095)939-16-83, +007(095)939-23-83 > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly -- Teodor Sigaev E-mail: teodor@sigaev.ru WWW: http://www.sigaev.ru/
В списке pgsql-ru-general по дате отправления: