|
Автоматический выбор применяемого индекса в запросах файловой базы |
☑ |
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) более естественное решение - отказ от файловой версии. Раз уж хочешь управлять индексами
|
|