|
Индексация поля ВТ, если выборка из ВТ будет условием (параметром) виртуальной таблицы |
☑ |
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
|
ок. спасибо всем. Я сам тут подумал... использование В () означает, что в скобках массив (список) значений. Какая уж там индексация.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший