![]() |
![]() |
|
Автоматический выбор применяемого индекса в запросах файловой базы | ☑ | ||
---|---|---|---|---|
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) более естественное решение - отказ от файловой версии. Раз уж хочешь управлять индексами
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |