![]() |
![]() |
![]() |
|
Оптимизация запросов | ☑ | ||
---|---|---|---|---|
0
Killgur
15.07.04
✎
15:02
|
Самописная конфа, v77, регистры
Для выборки данных используеются два запроса, на основании их далее расчитываются дефицит материалов. Что можно сделать для ускорения запроса? Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Потребность) |Период с ВыбКонПериода по ВыбКонПериода; |Без итогов; |МПЗ = Регистр.Потребность.МПЗ; |ВидМатериала = Регистр.Потребность.МПЗ.ВидМатериала; |Количество = Регистр.Потребность.Количество; |Функция КоличествоКонОст = КонОст(Количество); |Группировка МПЗ без упорядочивания без групп; |Условие(ВидМатериала в ВидПолуфабриката); |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; тз =""; Запрос.Выгрузить(тз); сзМПЗ = СоздатьОбъект("СписокЗначений"); тз.Выгрузить(сзМПЗ); ОснСклад = Константа.ОсновнойСкладПолуфабрикатов; ТекстЗапроса = "//{{ЗАПРОС(Дефицит) |Период с ВыбКонПериода по ВыбКонПериода; |Заказ = Регистр.Потребность.Заказ, Регистр.Резервы.Заказ, Регистр.СебестоимостьПроизводства.Заказ; |МПЗ = Регистр.Потребность.МПЗ, Регистр.Резервы.МПЗ, Регистр.СебестоимостьПроизводства.Полуфабрикат, Регистр.МестаХранения.МПЗ, Регистр.ЗаказМПЗ.МПЗ; |Потр = Регистр.Потребность.Количество; |Рез = Регистр.Резервы.Количество; |Враб = Регистр.СебестоимостьПроизводства.Количество; |НаСкл = Регистр.МестаХранения.Количество; |ВЗак = Регистр.ЗаказМПЗ.Количество; |Склад = Регистр.МестаХранения.МестоХранения; |Функция Потребность = КонОст(Потр); |Функция Резерв = КонОст(Рез); |Функция НаСкладе = КонОст(НаСкл) когда (Склад в ОснСклад); |Функция ВРаботе = НачОст(Враб); |Функция ВЗаказе = КонОст(ВЗак); |Группировка МПЗ без упорядочивания без групп; |Группировка Заказ; |Условие(МПЗ в сзМПЗ); |"//}}ЗАПРОС ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; |
|||
1
Warlock
15.07.04
✎
20:16
|
(не вчитываясь в текст запросов) Переписать все нафиг!
|
|||
2
Валентин
15.07.04
✎
21:47
|
На строчке тз.Выгрузить(сзМПЗ), сзМПЗ становиться "ТаблицейЗначений". Лучше програмно скопируй
Но согласен с (1) |
|||
3
NS
16.07.04
✎
01:30
|
Хм... А что не так?
(2) Не смешно... Бредишь... |
|||
4
Killgur
16.07.04
✎
08:47
|
(1) Аргументы в студию ...
(2) там одна колонка МПЗ, ее выгружаем в список значений, по моему тут все нормально (3) Это все работает, меня интересует вопрос ускорения запросов. |
|||
5
Sniffer
16.07.04
✎
08:58
|
(2)в каком месте сзМПЗ становиться "ТаблицейЗначений"? По-моему все нормально
|
|||
6
Валентин
16.07.04
✎
09:31
|
Виноват. Писал теоретически. Сейчас проверил действительно все работает. Пойду учить матчасть.
Но все равно. Запрос должен быть красивым. Или у меня свое понятие о красоте... |
|||
7
Sniffer
16.07.04
✎
09:37
|
Понятие "красоты" ИМХО включает в себя корректность и быстродействие работы софта.
|
|||
8
fez
16.07.04
✎
10:05
|
Переписать, используя прямой доступ к таблицам.
|
|||
9
Sniffer
16.07.04
✎
10:40
|
(8) Это как интересно "прямой доступ к таблицам"? Если БД на SQL, тогда скл-ным запросом, а если ДБФ - используя функциия низкого уровня DELPHI, C++, ASSEMBLER или в машинных кодах?!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |