Имя: Пароль:
1C
1C 7.7
v7: Оптимизация запроса 1с 7.7
0 Gera1t
 
21.03.17
11:21
Здравствуйте!
Есть база 1с 7.7 полностью самописная.
Номенклатура около 200000

            "//{{ЗАПРОС(Сформировать)
            |Обрабатывать НеПомеченныеНаУдаление;
            |Без итогов;
            |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
            |Группировка Номенклатура без групп;
            |Условие(Номенклатура в Отбор);
            |"//}}ЗАПРОС

Отбор это поле на форме
Использую вот такой запрос в отчетах, но выполняется долго, около 3-4 минут.
Подскажите пожалуйста как можно оптимизировать запрос, что бы он выполнялся быстрей.

Спасибо!
1 Джордж1
 
21.03.17
11:22
Перебором может и быстрее получится
2 Gera1t
 
21.03.17
11:26
Одинаково примерно, я проверял
3 Gera1t
 
21.03.17
11:26
В 8 же запросы в разы быстрей, почему в 7 так не работает?
4 Базис
 
naïve
21.03.17
11:29
Если отборы фиксированные, то храни готовые наборы в ТЗ, но следи за необходимостью обновления этих наборов. ТЗ формируй при запуске или по кнопке.
5 Gera1t
 
21.03.17
11:30
Это в отчетах, отборы разные
6 Ёпрст
 
гуру
21.03.17
11:31
(0)

select id [Номенклатура $Справочник.Номенклатура]
from $Справочник.Номенклатура
where id in (select val from #Отбор)
7 fedoss
 
21.03.17
11:32
А в поле "Отбор" что? Группа?
Возможно проблема в разветвленном справочнике и долгой проверке на вхождение в группу. Нет возможности сформировать быстро список вложенных групп и проверить на родителя?
8 Gera1t
 
21.03.17
11:33
Отбор может быть и группа и элемент справочника
9 fedoss
 
21.03.17
11:33
При выбранном элементе работает тоже 3 минуты?
10 VladZ
 
21.03.17
11:36
(0) База DBF? Или SQL? Сетевая? Или в терминале?
11 Gera1t
 
21.03.17
11:36
База файловая, в терминале
Если выбрать элемент так же долго формирует
12 Gera1t
 
21.03.17
11:37
А перевод на SQL решит проблему? И как то самописную конфигурацию специально адаптировать под SQL нужно?
13 VladZ
 
21.03.17
11:37
(11) Файловая в терминале - это хорошо.  Попробуй вариант (6).
14 VladZ
 
21.03.17
11:38
Перевод на SQL прироста производительности не даст. Надежность повышается.  Скорость можно получить, переписав на прямые запросы.
15 Gera1t
 
21.03.17
11:40
(14) Я не понял как это реализовать, не когда так не делал, если не сложно вкратце хотя бы направление что искать, потому что не понимаю о чем речь
16 fedoss
 
21.03.17
11:42
(11) Хрень какая-то. Не может он один элемент по индексу искать 3 минуты. К тому же в относительно маленькой таблице.
17 olegves
 
21.03.17
11:42
(15) гугли 1с++
18 Базис
 
naïve
21.03.17
11:43
Попроси Ёпрста за деньги или сам читай про прямые запросы.
19 Gera1t
 
21.03.17
11:45
(11) Базу писал не я, мне приходится разбираться, много что криво написано. Хотя бы то, что база для торговли написана полностью на бухгалтерских итогах, и совсем не используются регистры.
(15)Спасибо!
20 МихаилМ
 
21.03.17
11:47
21 МихаилМ
 
21.03.17
11:49
+(20)
тоже + про группировки
Оптимизация запроса.  Склад
22 Builder
 
21.03.17
11:51
(0) В данном случае такой запрос к справочникам на SQL отработает гораздо быстрее, чем на DBF, проверено.
На SQL надежность выше, но своих проблем хватает, надо будет оптимизировать базу/запросы.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.