Имя: Пароль:
1C
1С v8
Автоматический выбор применяемого индекса в запросах файловой базы
0 Rema Dan
 
08.12.16
16:42
В конфигурации присутствует документ ДокументОбмена (60к+ документов). Платформа 8.3.8.2137.
Делаем несколько вариантов запроса к таблице документов с разными вариантами отборов по полям документов:

Вариант 1

    ВЫБРАТЬ
        ДокументОбмена.Ссылка
    ИЗ
        Документ.ДокументОбмена КАК ДокументОбмена
    ГДЕ
        ДокументОбмена.СсылкаДокумент1С = &СсылкаДокумент1С
        И ДокументОбмена.Заказчик = &Заказчик
        И ДокументОбмена.ТипДокументаТекстовый = "ORDERS"

Вариант 2

    ВЫБРАТЬ
        ДокументОбмена.Ссылка
    ИЗ
        Документ.ДокументОбмена КАК ДокументОбмена
    ГДЕ
        ДокументОбмена.ТипДокументаТекстовый = "ORDERS"
        И ДокументОбмена.СсылкаДокумент1С = &СсылкаДокумент1С

Вариант 3

    ВЫБРАТЬ
        ДокументОбмена.Ссылка
    ИЗ
        Документ.ДокументОбмена КАК ДокументОбмена
    ГДЕ
        ДокументОбмена.Заказчик = &Заказчик
        И ДокументОбмена.СсылкаДокумент1С = &СсылкаДокумент1С

Вариант 4

    ВЫБРАТЬ
        ДокументОбмена.Ссылка
    ИЗ
        Документ.ДокументОбмена КАК ДокументОбмена
    ГДЕ
        ДокументОбмена.СсылкаДокумент1С = &СсылкаДокумент1С

Для всех 3 полей, по которым производится отбор, стоит признак индексирования, но значения поля "СсылкаДокумент1С" уникальны для 95% документов. На тестовом прогоне (100 поисков) варианты 1 и 3 выполняются по 20 секунд, в то время как варианты 2 и 4 менее секунды.
Очевидно, что при выполнении вариантов 2 и 4 применяется индекс по полю "СсылкаДокумент1С", а для остальных вариантов менее удачный индекс.
Вопрос:
Как в файловой базе платформа принимает решение какой индекс применять в таких запросах? Тесты показывают, что порядок следования реквизитов в метаданных документа не влияет на результат запроса. Как не влияют и имена полей.
1 Лефмихалыч
 
08.12.16
17:42
НУ, выбери сначала во временную таблицу вариантом 2 или 4, а потом из этого выбери все остальное.
Ты вряд ли найдешь ответ на этот вопрос.
2 Fragster
 
гуру
08.12.16
18:40
порядок реквизитов какой?
3 H A D G E H O G s
 
08.12.16
19:15
(0) Может быть и криво. Это вам не SQL, хотя 1С и походит на него почти полностью в плане физики запросов.
4 Rema Dan
 
09.12.16
13:30
(1) Через временную таблицу и решил вопрос сейчас, но это выглядит как костыль. Хотелось бы найти более естественное решение.
(2) Все реквизиты по алфавиту, от смены порядка (с реструктуризацией и реиндексацией) ничего не меняется.
Я думаю, что порядок применения индексов зависит от порядка каких-нибудь внутренних идентификаторов реквизитов документа.
5 Лефмихалыч
 
09.12.16
13:32
(4) более естественное решение - отказ от файловой версии. Раз уж хочешь управлять индексами
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший