Имя: Пароль:
1C
1С v8
Индексация поля ВТ, если выборка из ВТ будет условием (параметром) виртуальной таблицы
,
0 PiotrLoginov
 
30.01.18
19:18
Привет всем. Нужно ли индексировать Поле1 в ВТ_ПараметрОтбор?


ВЫБРАТЬ
    Объекты.Поле1
ПОМЕСТИТЬ ВТ_ПараметрОтбор
ИЗ Справочник.Объекты КАК СправочникОбъекты
;

ВЫБРАТЬ
    Обороты.ПолеИзмерение,
    Обороты.РесурсОборот
    РегистрНакопления.ДвиженияОбъектов.Обороты( , , , ПолеИзмерение В
                    (ВЫБРАТЬ
                        ВТ_ПараметОтбор.Поле1
                    ИЗ ВТ_ПараметрОтбор КАК ВТ_ПараметрОтбор)) КАК Обороты
1 PiotrLoginov
 
30.01.18
19:18
*
ВЫБРАТЬ
    СправочникОбъекты.Поле1
2 tesseract
 
30.01.18
19:23
Зачем? У тебя же нет никого поиска, тупой скан таблицы.
3 PiotrLoginov
 
30.01.18
19:38
(2) Не знаю. Индексация Поля нужна, если потом, когда ВТ будет использоваться, она будет соединяться с другой таблицей по этому полю, поэтому чтобы ответить на мой вопрос в (0), надо четко понимать, как используется выборка из ВТ_ПараметОтбор, когда используется в качестве параметра виртуальной таблицы.

Возможно, по факту в некоторых СУБД использование выборки из ВТ_ПараметОтбор для фильтрации виртуальной таблицы на первых этапах обработки запроса как раз означает соединение этой выборки с какими-то еще таблицами как по полю-условию
4 Fram
 
30.01.18
19:39
(2) Даже если б был, прирост от индкесации будет заметен только если у тебя записей там под лимон и более.
5 PiotrLoginov
 
30.01.18
19:41
(4) нет, это понятно, что сама по себе индексация имеет смысл не всегда, а только при соответсвующих объемах и других условиях.

Мой вопрос как раз про те ситуации, когда прочие условия говорят, что там, где индексация нужна, её стОит выполнить. И вот тут-то дело упирается в случаи использования выборок из ВТ в качестве условия в параметрах виртуальных таблиц
6 Fram
 
30.01.18
19:45
(5) ну, глянь профайлером скуля например, если очень интересно
7 H A D G E H O G s
 
30.01.18
19:53
(0) Индексировать ВТ не нужно. Почти никогда.
8 ИТ директор
 
30.01.18
20:09
Если ВТ большая, скуль преобразует твой запрос в соединение с врем. таблицей. Возможно индекс ВТ в этом случае будет использован. Но это не точно.
9 ИТ директор
 
30.01.18
20:10
лучше не гадать и сделать (6) но вообще пофигу это всё
10 tesseract
 
30.01.18
20:11
(3) А где у тебя соединение? У тебя тупой скан.
(6) Если нет RLS там скучно все.
11 H A D G E H O G s
 
30.01.18
20:11
Если ВТ большая - то такой ВТ быть не должно. Редким исключением могут быть какие-нибудь зубодробительные запросы с несколькими таблицами и группировками.
12 ИТ директор
 
30.01.18
20:14
Да, если ВТ большая, лучше сразу делать соединение справочника с виртуальной таблицей.
13 ИТ директор
 
30.01.18
20:14
ВТ = врем. таблица
14 ИТ директор
 
30.01.18
20:15
Т.к. выборка во врем. таблицу это всегда нагрузка на TempDB
15 PiotrLoginov
 
30.01.18
20:17
ок. спасибо всем. Я сам тут подумал... использование В ()  означает, что в скобках массив (список) значений. Какая уж там индексация.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.