![]() |
![]() |
![]() |
|
Оптимизация запроса, конфа рарус торговля+crm | ☑ | ||
---|---|---|---|---|
0
Простенький вопросик
06.05.13
✎
08:50
|
на закладках стола crm есть закладка продажи, которая открывается при переходе 20-30 секунд, даже если пусто. Там есть такой запрос, который больше всего тормозит по счетчику производительности. Не подскажете, что там может быть не так?
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | РасчетыСКонтрагентами.Сделка.Дата КАК Дата, | РасчетыСКонтрагентами.Сделка.Номер КАК Номер, | ВЫБОР | КОГДА РасчетыСКонтрагентами.Сделка.Проведен | ТОГДА 0 | КОГДА РасчетыСКонтрагентами.Сделка.ПометкаУдаления | ТОГДА 1 | ИНАЧЕ 2 | КОНЕЦ КАК Проведен, | РасчетыСКонтрагентами.Сделка КАК Документ, | РасчетыСКонтрагентами.Контрагент КАК Контрагент, | РасчетыСКонтрагентами.ДоговорКонтрагента КАК ДоговорКонтрагента, | РасчетыСКонтрагентами.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК Валюта, | РасчетыСКонтрагентами.Сделка.Ответственный КАК Ответственный, | РасчетыСКонтрагентами.Сделка.Подразделение КАК Подразделение, | ВЫРАЗИТЬ(РасчетыСКонтрагентами.СуммаСделки КАК ЧИСЛО(15, 2)) КАК ОбщаяСуммаСделки, | ВЫРАЗИТЬ(ЕСТЬNULL(РасчетыСКонтрагентами.СуммаОплачено,РасчетыСКонтрагентами.СуммаСделки - РасчетыСКонтрагентами.ДолгПоОплате) КАК ЧИСЛО(15, 2)) КАК СуммаОплачено, | ВЫРАЗИТЬ(ЕСТЬNULL(РасчетыСКонтрагентами.СуммаОтгружено,РасчетыСКонтрагентами.СуммаСделки - РасчетыСКонтрагентами.ДолгПоОтгрузке) КАК ЧИСЛО(15, 2)) КАК СуммаОтгружено, | РасчетыСКонтрагентами.Сделка.ДатаОплаты КАК ДатаОплаты, | РасчетыСКонтрагентами.Сделка.ДатаОтгрузки КАК ДатаОтгрузки |ИЗ | (ВЫБРАТЬ | ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПокупателя) КАК Сделка, | РасчетыСКонтрагентамиЗаказы.ДоговорКонтрагента КАК ДоговорКонтрагента, | ЕСТЬNULL(РасчетыСКонтрагентамиЗаказы.Контрагент,РасчетыСКонтрагентамиЗаказы.ДоговорКонтрагента.Владелец) КАК Контрагент, | СУММА(ЗаказыПокупателейВсяТаблица.СуммаВзаиморасчетов) КАК СуммаСделки, | МАКСИМУМ(РасчетыСКонтрагентамиЗаказы.ДолгПоОплате) КАК ДолгПоОплате, | МАКСИМУМ(РасчетыСКонтрагентамиЗаказы.ДолгПоОтгрузке) КАК ДолгПоОтгрузке, | Null КАК СуммаОплачено, | Null КАК СуммаОтгружено | | ИЗ | (ВЫБРАТЬ | ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.Сделка, ЗаказыПокупателейОстатки.ЗаказПокупателя) КАК Сделка, | ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,ЗаказыПокупателейОстатки.ДоговорКонтрагента) КАК ДоговорКонтрагента, | РасчетыСКонтрагентамиОстатки.Контрагент КАК Контрагент, | ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток,0) КАК ДолгПоОплате, | ЕСТЬNULL(ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток,0) КАК ДолгПоОтгрузке | ИЗ | РегистрНакопления.РасчетыСКонтрагентами.Остатки(&ДатаОстатков, Сделка ССЫЛКА Документ.ЗаказПокупателя {(Контрагент).* КАК Контрагент, (ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПокупателя).Дата) КАК Дата,(ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПокупателя).Ответственный) КАК Ответственный}) КАК РасчетыСКонтрагентамиОстатки | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаОстатков,ЗаказПокупателя ССЫЛКА Документ.ЗаказПокупателя {(ЗаказПокупателя.Контрагент) КАК Контрагент, (ЗаказПокупателя.Дата) КАК Дата, (ЗаказПокупателя.Ответственный) КАК Ответственный}) КАК ЗаказыПокупателейОстатки | ПО РасчетыСКонтрагентамиОстатки.Сделка = ЗаказыПокупателейОстатки.ЗаказПокупателя) КАК РасчетыСКонтрагентамиЗаказы | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей КАК ЗаказыПокупателейВсяТаблица | ПО (ЗаказыПокупателейВсяТаблица.ЗаказПокупателя = РасчетыСКонтрагентамиЗаказы.Сделка) | И (ЗаказыПокупателейВсяТаблица.Регистратор ССЫЛКА Документ.ЗаказПокупателя | ИЛИ ЗаказыПокупателейВсяТаблица.Регистратор ССЫЛКА Документ.КорректировкаЗаказаПокупателя) | | СГРУППИРОВАТЬ ПО | РасчетыСКонтрагентамиЗаказы.Сделка, | РасчетыСКонтрагентамиЗаказы.ДоговорКонтрагента, | РасчетыСКонтрагентамиЗаказы.Контрагент | | ОБЪЕДИНИТЬ ВСЕ | ВЫБРАТЬ | РасчетыСКонтрагентамиПоСчетам.Сделка, | РасчетыСКонтрагентамиПоСчетам.Сделка.ДоговорКонтрагента, | РасчетыСКонтрагентамиПоСчетам.Контрагент, | РасчетыСКонтрагентамиПоСчетам.Сделка.СуммаДокумента * ВЫБОР | КОГДА РасчетыСКонтрагентамиПоСчетам.Сделка.ВалютаДокумента = РасчетыСКонтрагентамиПоСчетам.Сделка.ДоговорКонтрагента.ВалютаВзаиморасчетов | ТОГДА 1 | ИНАЧЕ ВЫБОР | КОГДА РасчетыСКонтрагентамиПоСчетам.Сделка.КратностьВзаиморасчетов = 0 | ТОГДА 1 | ИНАЧЕ РасчетыСКонтрагентамиПоСчетам.Сделка.КратностьВзаиморасчетов | КОНЕЦ / ВЫБОР | КОГДА РасчетыСКонтрагентамиПоСчетам.Сделка.КурсВзаиморасчетов = 0 | ТОГДА 1 | ИНАЧЕ РасчетыСКонтрагентамиПоСчетам.Сделка.КурсВзаиморасчетов | КОНЕЦ | КОНЕЦ КАК СуммаСделки, | NULL КАК ДолгПоОплате, | NULL КАК ДолгПоОтгрузке, | РасчетыСКонтрагентамиПоСчетам.СуммаОплачено КАК СуммаОплачено, | РасчетыСКонтрагентамиПоСчетам.СуммаОтгружено КАК СуммаОтгружено |ИЗ | (ВЫБРАТЬ | ВЫРАЗИТЬ(РасчетыСКонтрагентамиОбороты.Сделка КАК Документ.СчетНаОплатуПокупателю) КАК Сделка, | РасчетыСКонтрагентамиОбороты.Контрагент КАК Контрагент, | СУММА(РасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход) КАК СуммаОплачено, | СУММА(РасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход) КАК СуммаОтгружено | ИЗ | РегистрНакопления.РасчетыСКонтрагентами.Обороты( | , | &ДатаОстатков, | Регистратор, | {(Контрагент).* КАК Контрагент, (ВЫРАЗИТЬ(Сделка КАК Документ.СчетНаОплатуПокупателю).Дата) КАК Дата,(ВЫРАЗИТЬ(Сделка КАК Документ.СчетНаОплатуПокупателю).Ответственный) КАК Ответственный}) КАК РасчетыСКонтрагентамиОбороты | ГДЕ | Сделка В | (ВЫБРАТЬ | РасчетыСКонтрагентамиОстатки.Сделка КАК Сделка | ИЗ | РегистрНакопления.РасчетыСКонтрагентами.Остатки(&ДатаОстатков, Сделка ССЫЛКА Документ.СчетНаОплатуПокупателю) КАК РасчетыСКонтрагентамиОстатки) | СГРУППИРОВАТЬ ПО | РасчетыСКонтрагентамиОбороты.Сделка, | РасчетыСКонтрагентамиОбороты.Контрагент) КАК РасчетыСКонтрагентамиПоСчетам | ) КАК РасчетыСКонтрагентами |{ГДЕ | (ВЫБОР | КОГДА (РасчетыСКонтрагентами.ДолгПоОплате) <= 0 | И (РасчетыСКонтрагентами.ДолгПоОтгрузке) <= 0 | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК СделкаЗакрыта, | (ВЫБОР | КОГДА (ЕСТЬNULL(РасчетыСКонтрагентами.СуммаОплачено,РасчетыСКонтрагентами.СуммаСделки - РасчетыСКонтрагентами.ДолгПоОплате)) > 0 | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК ОплаченоПолностью, | (ВЫБОР | КОГДА (ЕСТЬNULL(РасчетыСКонтрагентами.СуммаОтгружено,РасчетыСКонтрагентами.СуммаСделки - РасчетыСКонтрагентами.ДолгПоОтгрузке)) > 0 | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК ОтгруженоПолностью, | (ВЫБОР | КОГДА РасчетыСКонтрагентами.Сделка.ДатаОплаты <> &ПустаяДата | И РасчетыСКонтрагентами.Сделка.ДатаОплаты < &КонтрольнаяДата | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК СрокОплатыПрошел, | (ВЫБОР | КОГДА РасчетыСКонтрагентами.Сделка.ДатаОтгрузки <> &ПустаяДата | И РасчетыСКонтрагентами.Сделка.ДатаОтгрузки < &КонтрольнаяДата | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ) КАК СрокОтгрузкиПрошел}"; |
|||
1
zak555
06.05.13
✎
08:51
|
> Не подскажете, что там может быть не так?
нужно отказаться |
|||
2
Ranger_83
06.05.13
✎
08:52
|
отключить RLS
|
|||
3
Простенький вопросик
06.05.13
✎
08:54
|
(2)
В смысле |
|||
4
Ranger_83
06.05.13
✎
08:56
|
(3) Предполагаю,что тормозит из-за RLS
|
|||
5
Простенький вопросик
06.05.13
✎
09:01
|
(4)
то есть где что отключить, чтобы это проверить? |
|||
6
Ranger_83
06.05.13
✎
09:03
|
(5) обычно в настройках программы.Настройка прав доступа на уровне записей
|
|||
7
tushich
06.05.13
✎
11:09
|
(0) профайлер и план запроса в студию. Сразу вижу соединения с подзапросами.
|
|||
8
tushich
06.05.13
✎
11:11
|
(5) Убери слово разрешенные из запроса и посмотри быстрее выполняется или нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |