Имя: Пароль:
1C
1C 7.7
v7: 1с++ Индексированная таблица - скорость создания индексов
0 dk
 
15.02.12
13:20
Исходные
1с 7.7 1с++ MS SQL 2000
получаю запросом таблицу - около 4000 записей
выгружаю в индексированную таблицу и создаю 7 индексов, некоторые накопительные типа Инд1, Инд2, Инд1Инд2Инд3, ...
Проблема
медленно создаются индексы - около 2 минут
сначала нашел косяк - индекс по наименованию 50 символов строился, однако при смене индекса с наименования на ссылку - скорость формированию индексов не изменилась.
---
Зачем стока индексов? Для того чтобы выводить итоги в различных разрезах.
---
Вопросы
1. Можно ли заменить 4 индекса Инд1, Инд1Инд2, Инд1Инд2Инд3, Инд1Инд2Инд3Инд4 только одним Инд1Инд2Инд3Инд4? Если можно, то как пользоваться итогами лишь по части индекса?
2. Поможет ли перенос из индексированной таблицы в темповую таблицу на скуле и построение индексов в темпе?
3. Может есть более простые способы получения итогов в различных измерениях - без использования индексов?
1 Гефест
 
15.02.12
13:24
Почему в запросе итоги не посчитать?
2 dk
 
15.02.12
13:25
посчитать можно
вопрос как их потом из ТЗ вытащить
3 leshikkam
 
15.02.12
13:25
Покажи код создания индексов:
Может упустил использование модификатора '*'? (по внутреннему представлению)
например у тебя в индексе
("индНоменклатура","Номенклатура",0);
а вот так:
("индНоменклатура","*Номенклатура",0)
будет намного быстрее.
4 trad
 
15.02.12
13:26
(0)
потенциально отвечающим могут стать интересны селект-лист запроса с типизацией
и индексные выражения
5 Гефест
 
15.02.12
13:28
6 Гефест
 
15.02.12
13:28
(5) глава 9
7 viktor_vv
 
15.02.12
13:36
А метод индексированной таблицы Группировать() чем не устраивает ? В принципе тоже самое, но быстрее и выводить легко.
8 dk
 
15.02.12
13:51
(3) верно, без внутреннего представления - тупо через названия колонок
(4) запрос нет смысла показывать, а индексные выражения тупо названия колонок, хотя в самих колонках данные типизированы до справочников и документов
(5) спасибо, интересно. но в данном случае итоги нужны в нескольких несовпадающих разрезах, например Колонка1Колонка2Колонка3 и потом Колонка1Колонка5
(7) дык потом эту сгруппированную все равно придется перебирать, чтобы до конкретного разреза добраться
----
пока попробую индексы через * задать - думаю должно ускорить до приемлемой скорости
9 ЧеловекДуши
 
15.02.12
13:55
4000 - это же мало :)
Может стоит подумать об другом методе.
10 Mikeware
 
15.02.12
13:56
4к строк - это ж слезки...
что-то нечисто... не должно более секунды-двух...
11 viktor_vv
 
15.02.12
14:01
(8) "верно, без внутреннего представления - тупо через названия колонок"

Че-то я не понял, так ты как задаешь индексное выражение ? Так : ("индНоменклатура","Номенклатура",0);

Тогда понятны тормоза.
12 dk
 
15.02.12
14:04
(11) угу
13 trad
 
15.02.12
14:11
(8) а я запрос и не предлагал показать.
ну нет, так нет чо.
14 viktor_vv
 
15.02.12
14:29
(12) Ну тогда понятно почему "однако при смене индекса с наименования на ссылку - скорость формированию индексов не изменилась."
Добавь модификаторы для внутреннего представления.
Вроде как тебе порядок следования не особо важен, так как индексы используешь только для фильтров.
15 dk
 
15.02.12
14:52
всем спасибо
добавление * в индексное выражение ускорило формирование индексов до менее 1 сек ))
да и итоги намного шустрее стали получаться - забегал отчет вместо ползанья