Поиск ближайшего - Mailing list pgsql-ru-general

From Evgeny M. Baldin
Subject Поиск ближайшего
Date
Msg-id Pine.LNX.4.58.0504061538050.24941@star.inp.nsk.su
Whole thread Raw
Responses Re: Поиск ближ  (Teodor Sigaev <teodor@sigaev.ru>)
Re: Поиск ближайшего  (Oleg Bartunov <oleg@sai.msu.su>)
List pgsql-ru-general
Добрый день

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

 Преамбула: ключом является время BeginTime. Запросу тоже передаётся
время Time. По запросу необходимо выдернуть ближайшую по времени запись,
где BeginTime<=Time (назовём эту запись валидной для Time)

 Амбула: Запрос представляет из себя фразу типа:

select * from таблица where BeginTime<=Time
                       order by BeginTime desc limit 1;

Индексы работают, одиночные запросы проходят более-менее быстро, хотя тоже
хотелось бы побыстрее.

А вот попытка сопоставить валидные записи для массива времён, особенно
когда число записей в таблице превышает десятки тысяч наступает полный :(

Что хотелось бы: когда идёт поиск для какого-то числа на предмет
равенства, то используется бинарный поиск - это быстро. Хотелось бы иметь
поиск подобного рода, но не на предмет поиска точного значения, а на
предмет поиска ближайшего. Как я понимаю по числу действий это тоже самое,
просто надо помнить предыдущее число.

То есть нужен оператор типа равенства - назовём его CLOSE TO для работы с
временными данными, стой же самой скоростью работы для быстрого
сопоставления.

С уважением
    Евгений

P.S.  Я не программист - я пользователь, поэтому хотелось бы получить
результат малой кровью.

pgsql-ru-general by date:

Previous
From: Genix
Date:
Subject: Re: соединение
Next
From: Teodor Sigaev
Date:
Subject: Re: Поиск ближ