8.х Помогите оптимизировать запрос.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Гость, 23 июл 2006.

  1. TopicStarter Overlay
    Гость
    Online

    Гость Гость Гость

    В БП создал отчет по складу(остатки и движения в разрезе складов, номенклатуры, партий).
    Текст запроса выглядит следующим образом:

    Код:
    "ВЫБРАТЬ
    |    ХозрасчетныйОстаткиИОбороты.Регистратор КАК Регистратор,
    |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
    |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
    |    ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Субконто3,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстаток) КАК СуммаНачальныйОстаток,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток) КАК СуммаКонечныйОстаток,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК СуммаОборотДт,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаОборотКт,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт) КАК КоличествоОборотДт,
    |    СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт) КАК КоличествоОборотКт
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(
    |        &НачДата,
    |        &КонДата,
    |        Регистратор,
    |        ДвиженияИГраницыПериода,
    |        Счет В ИЕРАРХИИ (&Сч10)
    |            ИЛИ Счет В ИЕРАРХИИ (&Сч41)
    |            ИЛИ Счет В ИЕРАРХИИ (&Сч43),
    |        ,
    |        ) КАК ХозрасчетныйОстаткиИОбороты
    |ГДЕ
    |    ХозрасчетныйОстаткиИОбороты.Субконто3 В ИЕРАРХИИ(&Субконто3)
    |    И ХозрасчетныйОстаткиИОбороты.Субконто1 В ИЕРАРХИИ(&Субконто1)
    |
    |СГРУППИРОВАТЬ ПО
    |    ХозрасчетныйОстаткиИОбороты.Субконто3,
    |    ХозрасчетныйОстаткиИОбороты.Субконто1,
    |    ХозрасчетныйОстаткиИОбороты.Субконто2,
    |    ХозрасчетныйОстаткиИОбороты.Регистратор
    |ИТОГИ
    |    СУММА(СуммаНачальныйОстаток),
    |    СУММА(СуммаКонечныйОстаток),
    |    СУММА(СуммаОборотДт),
    |    СУММА(СуммаОборотКт),
    |    СУММА(КоличествоНачальныйОстаток),
    |    СУММА(КоличествоКонечныйОстаток),
    |    СУММА(КоличествоОборотДт),
    |    СУММА(КоличествоОборотКт)
    |ПО
    |    Субконто3,
    |    Субконто1" + ?(Иерархия," ИЕРАРХИЯ,",",") + "
    |    Субконто2,
    |    Регистратор";
    
    
    
    
    При проверке на тестовой базе, в которой от силы два десятка документов запрос обрабатывается секунд пять-шесть. База локальная, машинка быстрая (Athlon64 3000, 1Gb, 250Gb SATA). Работать отчет должен в сети и документов будет гораздо больше… При этом существует аналогичный отчет для базы без партионного учета, который при тестировании на рабочей базе с большим количеством документов выполняется почти мгновенно. Структурная разница только в количестве субконто и, соответственно, в количестве вложенных циклов.
  2. 1010011010
    Offline

    1010011010 [1cworld]

    Регистрация:
    1 авг 2006
    Сообщения:
    582
    Симпатии:
    0
    Баллы:
    26
    базы твоей нету :(
    запости замер производительности тут, чтобы видно было кто сколько кушает
  3. ИгорьК
    Offline

    ИгорьК

    Регистрация:
    24 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Перемести условия запроса из ГДЕ в параметры регистра
  4. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Подозрительной мне кажется конструкция.

    | Счет В ИЕРАРХИИ (&Сч10)
    | ИЛИ Счет В ИЕРАРХИИ (&Сч41)
    | ИЛИ Счет В ИЕРАРХИИ (&Сч43),
  5. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    [off]Боже - с какого дна подняли! Автор за полтора года, я полага, разобрался :)[/off]

    ИгорьК, вероятно, прав, но такой запрос все равно быстро работать даже в теории не будет :)
  6. ИгорьК
    Offline

    ИгорьК

    Регистрация:
    24 дек 2007
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Почему быстрее. Условие ГДЕ работает для таблицы, полученной из выборки регистру. А параментры регистра - работаю на этапе выборки. Мне помогало.
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Я согласен, что ГДЕ тут во вред, но субконто... Да еще проверка в иерархии... А если это строка? Там вообще атас будет....

Поделиться этой страницей