|
ОФФ: Индексация полей в запросах. | ☑ | ||
---|---|---|---|---|
0
Error pro
16.11.11
✎
10:19
|
Всем привет, нашел статью по оптимизации запросов а именно индексации. Возник вопрос имеет ли смысл индексировать какое либо поле вот в таком пакете (В регистре 2 измерения(Номенклатура,склад) и 2 ресура(Сумма,Кол-во)) :
|ВЫБРАТЬ | ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура, | ОстаткиНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстатокНаВсехСкладах |ПОМЕСТИТЬ ОстатокНаСкладах |ИЗ | РегистрНакопления.ОстаткиНоменклатуры.Остатки( | &МоментВремени, | Номенклатура В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ДокТЧ.Номенклатура | ИЗ | ДокТЧ КАК ДокТЧ)) КАК ОстаткиНоменклатурыОстатки | |ИНДЕКСИРОВАТЬ ПО | Номенклатура К решению задачи есть требование индексации полей. Искал в книге знаний какие-либо статьи про индексацию - не нашел, если можете тыкните. Спасибо. |
|||
1
Ненавижу 1С
гуру
16.11.11
✎
10:21
|
зависит от контекста где это используется
кстати слово РАЗЛИЧНЫЕ тут не нужно |
|||
2
Error pro
16.11.11
✎
10:21
|
(1) Да, уже убрал, я группирую ДокТЧ в первом пакете.
|
|||
3
Max1986
16.11.11
✎
10:22
|
а как к OFF это относится
|
|||
4
Error pro
16.11.11
✎
10:22
|
(1) В данном запросе нужно индексировать?
|
|||
5
Maxus43
16.11.11
✎
10:23
|
в книжках написано что индексировать желательно все поля, на которые накладываются потом условия или по которым идут соединения
|
|||
6
Ненавижу 1С
гуру
16.11.11
✎
10:24
|
(4) я не знаю как это используется потом
|
|||
7
Megas
16.11.11
✎
10:25
|
(6) + 100
(2) Тоже смотрю и думаю, думаю. А вообще (5) А ещё если разных записей мало то можно и не индексировать |
|||
8
Error pro
16.11.11
✎
10:25
|
(5) Спасибо, а я читал что индекс будет работать всегда при
отборе значения, 0,64% и меньше от общего количества строк, в ином случае будет полное сканирование таблицы (6) Потом эта таблица левым соединением присоединяется по полю номенклатура |
|||
9
Maxus43
16.11.11
✎
10:28
|
(8) я именно про временные таблицы, в обычных запросах СУБД сама решает как использовать индексы
|
|||
10
Error pro
16.11.11
✎
10:31
|
(9)Ясно, спасибо, лишняя индексация на производительность в худшую сторону никак не скажется?
|
|||
11
acsent
16.11.11
✎
10:32
|
(10) конечно скажется
|
|||
12
Maxus43
16.11.11
✎
10:33
|
время на индексацию конечно затрачивается, но зависит всё от частной ситуации как всегда. Если таблица большая и с ней соединения например, то время индексации окупиться с лихвой
|
|||
13
Axel2009
16.11.11
✎
10:34
|
(8) МС Скуль индекс будет срабатывать если выборка идет 33% значений
порой имеет смысл творить покрывающий индекс, чтобы сервер не тратил время на позиционирование строки в основной таблице |
|||
14
Error pro
16.11.11
✎
10:34
|
(12) как я понял из (5) и (9) индексировать имеет смысл только виртуальные таблицы?
|
|||
15
Maxus43
16.11.11
✎
10:36
|
(14) Только временные таблицы ты и можеш принудительно индексировать, остальное тупо не сможеш, нет там закладок индексации, рулит СУБД
|
|||
16
Axel2009
16.11.11
✎
10:36
|
(14) нет
|
|||
17
Error pro
16.11.11
✎
10:38
|
(15) Ясно, то есть в сабже имеет смысл написать индексацию если дальше по полю номенкалтура будет соединение?
(16) А какие еще? |
|||
18
Maxus43
16.11.11
✎
10:41
|
(17) да, или если условие будет. Так написано в настольной библии.
|
|||
19
Error pro
16.11.11
✎
10:42
|
(18) Спасибо всем. Вопрос снят)
|
|||
20
Axel2009
16.11.11
✎
10:50
|
(17) каждый случай индивидуальный.
|
|||
21
Error pro
16.11.11
✎
10:55
|
(20) Ну есть же какие-то общие рекомендации к использованию индексации?
|
|||
22
Error pro
16.11.11
✎
10:56
|
+(21) как описали в (5)
|
|||
23
Maxus43
16.11.11
✎
11:00
|
(22) в книжке прочитай сам, я дословно не помню, но общий смысл в этом. Для вирт таблиц из 10-ти записей есно индексация не критична
|
|||
24
Error pro
16.11.11
✎
11:03
|
(23) Ну конечно нужно понимать и учитывать уникальность записей, а книжка называется описание встроенного языка?
|
|||
25
Maxus43
16.11.11
✎
11:07
|
вродже тут http://v8.1c.ru/metod/books/book.jsp?id=187
|
|||
26
НЕА123
16.11.11
✎
11:09
|
(21)
читай теорию. формула времени выполнения приблизительно такая С + О(N) где С - время построения индекса = константа(почти, естественно, зависит от колва записей, но при больших N функция О(N) незаметно), N - колво операций. при N = 0, 1 очевиден только вред индексирование. Для N = 2 - уже непонятно. Для больших N - индексация обязательна. |
|||
27
Error pro
16.11.11
✎
11:09
|
(25) дома лежит такая, седня вечером внимательно гляну
|
|||
28
Error pro
16.11.11
✎
11:12
|
(26) спасибо, то что при N = 0, 1 очевиден только вред индексирования я уже понял.
|
|||
29
Axel2009
16.11.11
✎
11:16
|
(21) общая рекоммендация - рассматривать КАЖДЫЙ случай индивидуально. это относится к скуль серваку. остальные не знаю, я не юзаю.
|
|||
30
Axel2009
16.11.11
✎
11:17
|
(26) тоже не обязательно. если идет отбор по кластерному индексу, то я лучше выберу 3 раза из него, чем сформирую времянку и на нее навешу индекс и по нему проводить отбор.
|
|||
31
Axel2009
16.11.11
✎
11:18
|
(28) далеко не факт. порой создание временной таблицы помогает оптимизатору правильно использовать индексы в условиях невозможности воздействия на этот самый план запроса.
|
|||
32
Error pro
16.11.11
✎
11:19
|
(29) Кстати по поводу использования, коллега который летом сдал спеца, тоже утверждает что использовать смысла нет.
|
|||
33
Megas
17.11.11
✎
09:51
|
(32) Смотря где. Скорость запроса увеличивается в десятки раз. К примеру с индексами 3 сек без индексов 30 сек.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |