![]() |
|
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
|
||||
22
Builder
21.03.17
✎
11:51
|
(0) В данном случае такой запрос к справочникам на SQL отработает гораздо быстрее, чем на DBF, проверено.
На SQL надежность выше, но своих проблем хватает, надо будет оптимизировать базу/запросы. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |