|  | Быстрый поиск в таблице значений по датам | ☑ | 
    
        | 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 такие китайские попытки, а то можно попасть в длительный цикл     |  |