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