Поиск ближайшего
От | Evgeny M. Baldin |
---|---|
Тема | Поиск ближайшего |
Дата | |
Msg-id | Pine.LNX.4.58.0504061538050.24941@star.inp.nsk.su обсуждение исходный текст |
Ответы |
Re: Поиск ближ
Re: Поиск ближайшего |
Список | 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 по дате отправления: