|
оптимизировать запрос | ☑ | ||
---|---|---|---|---|
0
vip67
02.01.14
✎
11:46
|
Всем привет! с Новым Годом! и новыми успехами!
... и проблемами.... Есть запрос: ВЫБРАТЬ СуммаДт.Счет, СуммаДт.Субконто1, СуммаДт.СуммаОстатокДт, ДатаДт.Период КАК ДатаДолга, СуммаДт.Субконто2, СуммаДт.Субконто3, ВЫБОР КОГДА СуммаДт.Счет В ИЕРАРХИИ (&СчетПТУ) ТОГДА СуммаДт.Субконто2.КвоДнейПоставки ИНАЧЕ СуммаДт.Субконто2.КвоДнейПлатежа КОНЕЦ КАК КвоДнейПросрочки ИЗ РегистрБухгалтерии.Хозрасчетный.Остатки( &КонПериода, Счет В ИЕРАРХИИ (&СчетПТУ) ИЛИ Счет В ИЕРАРХИИ (&СчетРТУ), , ) КАК СуммаДт ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Счет КАК Счет, ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2, ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Субконто3, МАКСИМУМ(ХозрасчетныйОстаткиИОбороты.Период) КАК Период ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( , &КонПериода, Регистратор, , Счет В ИЕРАРХИИ (&СчетПТУ) ИЛИ Счет В ИЕРАРХИИ (&СчетРТУ), , ) КАК ХозрасчетныйОстаткиИОбороты ГДЕ ХозрасчетныйОстаткиИОбороты.Субконто1 = &Контрагент И НЕ ХозрасчетныйОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО И ВЫБОР КОГДА ХозрасчетныйОстаткиИОбороты.Счет В ИЕРАРХИИ (&СчетПТУ) ТОГДА НЕ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг ИНАЧЕ НЕ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее КОНЕЦ СГРУППИРОВАТЬ ПО ХозрасчетныйОстаткиИОбороты.Счет, ХозрасчетныйОстаткиИОбороты.Субконто1, ХозрасчетныйОстаткиИОбороты.Субконто2, ХозрасчетныйОстаткиИОбороты.Субконто3) КАК ДатаДт ПО СуммаДт.Счет = ДатаДт.Счет И СуммаДт.Субконто1 = ДатаДт.Субконто1 И СуммаДт.Субконто2 = ДатаДт.Субконто2 И СуммаДт.Субконто3 = ДатаДт.Субконто3 ГДЕ СуммаДт.Субконто1 = &Контрагент И СуммаДт.СуммаОстатокДт > 0 этот запрос отрабатывает в течении 7-9 сек. Так как к нему нужно обращаться многократно, в итоге отчет может формироваться в течении десятков минут. Цель запроса - возвращает дату возникновения долга и сумму долга - для расчета просроченной задолженности по условиям договора (условия отрабатываются позже. Как можно оптимизировать запрос, чтобы уменьшить время выполения (хотя бы до секунды)? |
|||
1
alex7six
02.01.14
✎
12:23
|
1. Условие из ГДЕ по контрагенты перенеси в параметры вирт. таблицы.
2. "Счет В ИЕРАРХИИ" замени на список счетов. 3. Внутреннее соединение делай не с вложенным запросом, а с временной таблицей. 4. Используй Выразить когда обращаешься к реквизитам субконто. 5. В параметры вирт. таблицу добавь по возможности отбор по массиву субконто. |
|||
2
ИсчадиеADO
02.01.14
✎
12:25
|
(1) опередил :)
1) "Так как к нему нужно обращаться многократно" - попытаться написать алгоритм так, чтобы за 1 раз вытащить 2) Счет В ИЕРАРХИИ (&СчетПТУ) ИЛИ Счет В ИЕРАРХИИ (&СчетРТУ) заменить на временную таблицу. Эту временную таблицу можно оставить в менеджере временных таблиц, итого она будет формироваться 1 раз |
|||
3
vip67
02.01.14
✎
13:01
|
спасибо! в качестве параметра счетПТУ и счет РТУ я уже передаю массив счетов.
передалеать алгоритм чтобы обращаться один раз - уже такая мысль была, потому как что 1 запись, что 10 формируются в запросе примерно за одно и то-же время . |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |