Имя: Пароль:
1C
1С v8
Вопрос про скорость работы с регистром накопления оборотов
0 PR
 
28.08.13
11:43
1. Да 0% (0)
2. Нет 0% (0)
3. Свое мнение 0% (0)
Всего мнений: 0

Предположим, что есть регистр накопления оборотов "Суммы" со следующими полями:
Измерения:
— Измерение1, индексируемое
— Измерение2, индексируемое
Ресурсы:
— Сумма

Если я правильно понимаю, то в 1С для этого регистра есть индекс, который работает, если я задаю отбор по некоторым измерениям, но поля пропускать нельзя?

То есть:
— Вариант выборки в запросе с отбором по измерению "Измерение1" будет работать быстро
— Вариант выборки в запросе с отбором по измерению "Измерение2" будет работать медленно
— Вариант выборки в запросе с отбором по измерениям "Измерение1" и "Измерение2" будет работать быстро

Так?
1 Широкий
 
28.08.13
11:44
не так
2 Ненавижу 1С
 
гуру
28.08.13
11:46
а что тебе не дает посмотреть состав построенных индексов на SQL?
3 Maxus43
 
28.08.13
11:47
а по какой конкретно таблице ты запрос делать будешь?
4 Maxus43
 
28.08.13
11:49
+ По основной таблице - без разницы, а по таблице оборотов - там индекс имеет вид Период + Измерение1 + ИзмерениеN + разделитель.
5 Ненавижу 1С
 
гуру
28.08.13
11:56
(4) почему по основной без разницы? там тоже индексы строятся
6 PR
 
28.08.13
11:59
(1) Черт, я так и знал. Спасибо за развернутое объяснение :))
7 PR
 
28.08.13
12:00
(3) По виртуальной
8 Maxus43
 
28.08.13
12:00
(4) в скорости без разницы, там отдельный индекс на каждое измерение, всмысле
Измерение1 + Период + Регистратор + НомерСтроки
ИзмерениеN + Период + Регистратор + НомерСтроки
9 PR
 
28.08.13
12:01
(4) Ну, то есть без отбора по измерению "Измерение1" для отбора по изменению "Измерение2" индекс задействован не будет?
10 Maxus43
 
28.08.13
12:01
(9) А енто смотри план запроса
11 PR
 
28.08.13
12:02
(8) А на все комбинации измерений тоже есть индексы?
12 PR
 
28.08.13
12:02
(10) Причем здесь план запроса?
Либо есть возможность использовать индекс либо нет.
13 Ненавижу 1С
 
гуру
28.08.13
12:03
(9) с чего ты решил?
14 PR
 
28.08.13
12:05
(13) Я же написал в (0) "поля пропускать нельзя?".
Я так понимаю, что если в индексе "Измерение 1 + Измерение 2", то нельзя отбирать по измерению 2 без отбора по измерению 1. Не?
15 Maxus43
 
28.08.13
12:06
(12) притом что я не помню)
16 Maxus43
 
28.08.13
12:07
(11) нет. Открой толстую книжку, страница 680 в редакции 2. По хорошему то надо смотреть в (2)
17 Ненавижу 1С
 
гуру
28.08.13
12:10
(14) сделал регистр как у тебя, посмотрел индексы, которые создались именно после включения "индексировать":
В таблица движений создался индекс на каждое измерение
В таблице оборотов - на второе измерение (на первое+второе было и ранее)
так что твой вывод не верен
18 Широкий
 
28.08.13
12:10
(14) Скуль может задействовать этот индекс, отберет по одному измерению, а потом выборку отфильтрует по второму
19 Fragster
 
модератор
28.08.13
12:11
да, 1су не хватает нормального управления индексами из платформы
20 PR
 
28.08.13
12:12
(16) Так я про то и говорю, что раз нет, то получается поля в отборе пропускать нельзя, иначе индекс работать не будет. Так?
21 Maxus43
 
28.08.13
12:13
(20) я не смотрел, но видимо таки (17), ибо он смотрел
22 PR
 
28.08.13
12:14
(17) Блин, это был простой пример. Хорошо, усложняю :))

Предположим, что есть регистр накопления оборотов "Суммы" со следующими полями:
Измерения:
— Измерение1, индексируемое
— Измерение2, индексируемое
— Измерение3, индексируемое
Ресурсы:
— Сумма

То есть вариант выборки в запросе с одновременным отбором по измерениям "Измерение2" и "Измерение3" будет работать медленно?
23 Широкий
 
28.08.13
12:18
(22) см (18)
24 Gammi
 
28.08.13
12:21
Была статья про пропуск измерений.
Не покрывающий индекс получается.Будет работать медленнее.(по материалам статьи)
25 viktor_vv
 
28.08.13
12:22
(22) Будет медленно.
Если будет отдельный индекс на какое-либо из измерений отбора, то может пойти по варианту (18).
26 PR
 
28.08.13
12:24
(18) Это понятно. Мерси.

Тогда следующий вопрос.

Допустим, измерение 1 — это организации и их 5 штук.

Что будет быстрее?

1. Отбор по измерениям 2 и 3 без отбора по измерению 1
2. 5 объединений с отборами по измерениям 2 и 3 с отбором по конкретной организации (первая в первом объединении, вторая во втором и т. д.)
27 viktor_vv
 
28.08.13
12:24
(25)+ Обычно по оборотам еще присутствует условие по периоду, так что по предопределенному индексу может выгрести записи по периоду.
28 viktor_vv
 
28.08.13
12:25
(26) Имхо, второй вариант быстрее будет.
29 Ненавижу 1С
 
гуру
28.08.13
12:25
(26) это надо замерять
30 Fragster
 
модератор
28.08.13
12:25
если РЕАЛЬНО в скорость упирается - делай измерение справочник, который будет играть роль комбинации необходимых для поиска реквизитов
31 Fragster
 
модератор
28.08.13
12:25
в остальных случаях предлагаю автору забить
32 viktor_vv
 
28.08.13
12:27
(28)+ Я так понял условие по периоду предполагается по умолчанию? Так как без него использование предопределенного индекса идет лесом.
33 PR
 
28.08.13
12:29
(32) Эээ... то есть если я не делаю отбор по периоду, то весь индекс идет лесом? Можно использовать только индекс по одному измерению?
34 giallo
 
28.08.13
12:31
(33) кластерный индекс идет лесом. Который Период + Измерение1 + ИзмерениеN
35 viktor_vv
 
28.08.13
12:31
(33) В виртуальной таблице, если пропущены условия по периоду, они вроде сами подставляются по максимуму.
К реальной можно самому добавиь условие по периоду с максимальными границами.
36 Широкий
 
28.08.13
12:32
(33) Остаются индексированные измерения.. у них индекс "Реквизит+Период"
37 PR
 
28.08.13
12:33
(35) Вот. А то у меня сразу вопрос был, как же все работает быстро в виртуальной таблице, если я по периоду не делаю отбор :))
38 Широкий
 
28.08.13
12:34
(33) если ты про таблицу итогов у оборотного регистра, то она не всегда задействована
Ошибка? Это не ошибка, это системная функция.