Имя: Пароль:
1C
 
Быстрый поиск в таблице значений по датам
0 Регистр
 
14.10.23
08:58
Таблица значений курсов валют с двумя колонками: Дата и Курс
Даты идут с пропусками, например:

02.09.2023  470
03.09.2023  471
07.09.2023  460

В таблице примерно 2 тыс. строк
Обращение к ней идет очень часто, выбирается курс на определенную дату. Естественно, добавлен индекс по дате, и если такая дата есть в таблице - поиск проходит быстро, но если нет - (например 05.09.2023) - приходится делать линейный перебор строк.

Как ускорить поиск ?

(советы "открой для себя регистр сведений "Курсы валют" - не подходят, т.к. эта таблица курсов берется из SQL базы другой (не 1С) программы, и по условиям задачи работать надо именно с этой таблицей)
1 Волшебник
 
14.10.23
09:42
Можно добавить пропущенные даты с сохранением предыдущего курса
2 Регистр
 
14.10.23
09:53
(1) Спс. А то я уже собирался колхозить собственные индексы.
3 Смотрящий
 
14.10.23
10:14
(2) Таблицу в запрос, в запросе эмулировать СрезПоследних
4 Злопчинский
 
14.10.23
10:33
(0) линейный перебор строк... Капец... Даже тупо половинным делением и то получится порядка 10 операций...
.
А в снеговик не завезли для ТЗ типа как в ИТЗ 7.7 НайтиБлижайшуюМеньше, НайтиБлижайшуюБольше?
5 Волшебник
 
14.10.23
10:39
(4) В восьмёрке есть индексация таблиц значений, в том числе по нескольким колонкам, но поиск только на равенство
6 H A D G E H O G s
 
14.10.23
12:42
(0) Зачем нужно делать полный перебор, если даты нет?
7 Злопчинский
 
14.10.23
14:23
(6) найти ближайшую ранешнюю. Если дата не найдена тогда от этой даты, циклом назад можно ещё и так
8 Кирпич
 
14.10.23
14:26
(0) Если нет на 05.09.2023, то отнять день и искать снова. Ищи на 04.09.2023, ищи на 03.09.2023 и т.д пока не найдешь. Если пропуски маленькие, то будет быстро.
9 H A D G E H O G s
 
14.10.23
14:26
(7) Спасибо. Понял, что ближайшую.
10 Волшебник
 
14.10.23
15:45
(8) Китайское программирование. Лучше сделать ограничение в 3 такие китайские попытки, а то можно попасть в длительный цикл