Имя: Пароль:
1C
1С v8
Индексация полей в запросе.
,
0 mzelensky
 
24.10.12
08:21
Доброго всем!
Буквально сегодня читал статью о том, как один чувак сдавал спеца по платформе. И там у него промелькнула фраза "желательно использовать пакетные запросы вместо вложенных, и индексировать". Ниже был приведен пример кода:

"ВЫБРАТЬ
| РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
| РасходнаяНакладнаяСписокНоменклатуры.Свойство КАК Свойство,
| РасходнаяНакладнаяСписокНоменклатуры.Количество
|ПОМЕСТИТЬ ВремТаб
|ИЗ
| Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
|ГДЕ
| РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Свойство
|;

Честно говоря никогда этим не пользовался. Попытался найти на "Я", но чего-то вразумительноге не увидел. Можете объяснить в каких ситуациях НЕОБХОДИМО применять "ИНДЕКСИРОВАТЬ ПО". Каким образом это повлияет на производительность?!
1 H A D G E H O G s
 
24.10.12
08:22
Херово повлияет
2 mzelensky
 
24.10.12
08:23
(1) а более развернутый ответ можно?!
3 H A D G E H O G s
 
24.10.12
08:24
Имеет смысл, когда
1) Таблица велика (больше 1000 строк)
2) Индексируемое поле малоселективно.
3) Таблица используется несколько раз
4 H A D G E H O G s
 
24.10.12
08:25
Если не выполняются первые 2 условия - индекс использоваться не будет.
5 ДенисЧ
 
24.10.12
08:25
необходимо - если временная - большая и индекс, который пытаешься создать, является сильно уникальным. В противном случае смысла вообще не будет.
6 H A D G E H O G s
 
24.10.12
08:25
Неуспел
7 ДенисЧ
 
24.10.12
08:25
Да твою ж... Ежик, ты сегодня постоянно меня обгоняешь :-)
8 Нууф-Нууф
 
24.10.12
08:26
Имеет смысл, когда накладные расходы на создание индекса будут значительно меньше выигранного времени при поиске в этой таблице
9 H A D G E H O G s
 
24.10.12
08:27
Меня сегодня жена разбудила в 7 утра и сказал - "пошел работать, животное, я давно уже встала (ага, у них там 10 утра уже)". Вот, изливаю злость.
10 Нууф-Нууф
 
24.10.12
08:27
(7) возвращайся на рынок СП торговать :)
11 Нууф-Нууф
 
24.10.12
08:27
(9) а жена где?
12 ILM
 
гуру
24.10.12
08:27
И еще полезно,  когда используется НЕОДНОКРАТНО как таблица левого соединения. Например, куча запросов с объединением, а уточняющие данные неиндексированны.  
Я применял для расчетов по бюджетной модели.
13 ДенисЧ
 
24.10.12
08:28
(10) Этот рынок уже теряет привлекательность... Спрос падает, накладные растут... :-(
14 mzelensky
 
24.10.12
08:29
Допустим у меня есть Рег Сведений непериодический с большим количеством записей. У него 3 измерения. Одно из измерений составного типа с большим количеством возможных типов. Обращаюсь я к нему довольно часто (использую в работе часто). Имеет смысл индеквировать?!
15 H A D G E H O G s
 
24.10.12
08:31
(14) Мы счаст говорим про временные таблицы или про физические?
16 mzelensky
 
24.10.12
08:31
(14) Забыл добавить - так как измерение составного типа, то индексация у него отключена.
17 mzelensky
 
24.10.12
08:32
(15) мммм....ну в конкретном случае про физические.
18 ILM
 
гуру
24.10.12
08:33
Лучшая проверка теории это практика.
19 ДенисЧ
 
24.10.12
08:33
(15) Временные - они тоже физические :-0
20 John83
 
24.10.12
08:51
(3) "2) Индексируемое поле малоселективно. "
это как?
21 Sammo
 
24.10.12
08:51
(3) Хм. Енмип при малоселективном индексе скуль все равно будет сваливаться в tablescan. Не?
22 Sammo
 
24.10.12
08:52
(20) Например, склад. Отбор по складу выбирает больше 3 данных.
23 H A D G E H O G s
 
24.10.12
08:52
24 H A D G E H O G s
 
24.10.12
08:53
Правильные ответы в (44) (47) (53)
25 Sammo
 
24.10.12
10:06
(23) Уточню, если индекс будет по 1 малоселективному полю, то да. Если в составном индексе - другое дело
26 mzelensky
 
24.10.12
10:38
(25) и что будет в составном индексе? у меня именно такая ситуация?