• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

8.1 Запрос. Оптимизация

  • Автор темы unknown181538
  • Дата начала
U

unknown181538

Есть запрос:
<!--shcode--><pre><code class='1С'>Запрос.Текст = "ВЫБРАТЬ
| Д*цензура*60.Субконто1 КАК СубконтоКонтрДт,
| Д*цензура*60.Субконто3 КАК СубконтоДокДт,
| Кредит60.Субконто1 КАК Контрагент,
| Кредит60.Субконто3 КАК СубконтоДокКт,
| Кредит60.СуммаОборотКт КАК ОборотКт,
| Д*цензура*60.СуммаОборотДт КАК ОборотДт,
| Д*цензура*60.КорСубконто3 КАК ПлПор,
| Д*цензура*60.КорСубконто3.Номер КАК НомерПл,
| Д*цензура*60.КорСубконто3.Дата КАК ДатаПл,
| Д*цензура*60.Субконто2 КАК ДоговорДт,
| Кредит60.Субконто2 КАК Договор,
| Кредит60.Субконто3.СуммаДокумента КАК СуммаПост,
| Кредит60.Субконто3.Номер КАК НомерПост,
| Кредит60.Субконто3.Дата КАК ДатаПост,
| Кредит60.Субконто3.Ссылка КАК СсылкаПост,
| СчетФактураПолученный.Ссылка КАК СФ,
| СчетФактураПолученный.ДокументОснование,
| СчетФактураПолученный.Номер КАК НомерСФ,
| СчетФактураПолученный.Дата КАК ДатаСФ
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет.Код = ""60.01"", , , , ) КАК Кредит60
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&ДатаНач, &ДатаКон, , Счет.Код = ""60.01"", , , , ) КАК Д*цензура*60
| ПО Кредит60.Субконто3 = Д*цензура*60.Субконто3
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
| ПО Кредит60.Субконто3 = СчетФактураПолученный.ДокументОснование"+
?(НетСФ," ГДЕ
| СчетФактураПолученный.Ссылка ЕСТЬ NULL "+
?(ЗначениеЗаполнено(Контрагент)," И Кредит60.Субконто1 = &Контрагент",""),?(ЗначениеЗаполнено(Контрагент)," ГДЕ Кредит60.Субконто1 = &Контрагент",""))+
" СГРУППИРОВАТЬ ПО
| Кредит60.Субконто1,
| Кредит60.Субконто3,
| Д*цензура*60.Субконто1,
| Д*цензура*60.Субконто3,
| Кредит60.СуммаОборотКт,
| Д*цензура*60.СуммаОборотДт,
| Д*цензура*60.Субконто2,
| Кредит60.Субконто2,
| Д*цензура*60.КорСубконто3,
| Кредит60.Субконто3.СуммаДокумента,
| Кредит60.Субконто3.Номер,
| Кредит60.Субконто3.Дата,
| Кредит60.Субконто3.Ссылка,
| СчетФактураПолученный.Ссылка,
| СчетФактураПолученный.ДокументОснование,
| СчетФактураПолученный.Номер,
| СчетФактураПолученный.Дата";[/CODE]
База большая и выполняется очено медленно. Ни у кого нет предложенй?
 
V

vitfil

У меня есть предложение: уменьшить размер секции ORDER BY
 
P

puh14

Переделать через ADO - но не факт что шибко быстрее будет.
 
U

unknown181538

У меня есть предложение: уменьшить размер секции ORDER BY
Нету у меня такой секции. Если Вы имеете ввиду GROUP BY, то при попытке ее уменьшить возникают ошибки "Поле не входит в группу" даже по полям не учавствующим в объединении.
 
U

unknown181538

Написал немножко другой отчет, со сходным результатом
<!--shcode--><pre><code class='1C'>"ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто2.СуммаДокумента КАК ОборотКт,
| ХозрасчетныйОстатки.Субконто2.Номер КАК НомерПост,
| ХозрасчетныйОстатки.Субконто2.Дата КАК ДатаПост,
| ХозрасчетныйОстатки.Субконто2.Ссылка КАК СсылкаПост,
| ХозрасчетныйОстатки.Субконто2.Контрагент КАК Контрагент,
| ХозрасчетныйОстатки.Субконто2.ДоговорКонтрагента КАК Договор,
| ХозрасчетныйОборотыДтКт.СубконтоКт3.Номер КАК НомерПл,
| ХозрасчетныйОборотыДтКт.СубконтоКт3.Дата КАК ДатаПл,
| ХозрасчетныйОборотыДтКт.СубконтоКт3.Ссылка КАК ПлПор,
| СчетФактураПолученный.Номер КАК НомерСФ,
| СчетФактураПолученный.Дата КАК ДатаСФ
| ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&КонПер, Счет.Ссылка В ИЕРАРХИИ (&Сч19),
,(Субконто2.Дата МЕЖДУ &НачПер И &КонПер) "+?(сзКонтрагенты.Количество()>0,"И (Субконто1 В ИЕРАРХИИ (&сзКонтрагенты))","")+
") КАК ХозрасчетныйОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НАчПер, &КонПер, , СчетДт.Ссылка = &Сч601, , СчетКт.Ссылка = &Сч602, , ) КАК ХозрасчетныйОборотыДтКт
| ПО ХозрасчетныйОстатки.Субконто2 = ХозрасчетныйОборотыДтКт.СубконтоДт3
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный КАК СчетФактураПолученный
| ПО ХозрасчетныйОстатки.Субконто2 = СчетФактураПолученный.ДокументОснование "+
//" ГДЕ СчетФактураПолученный.Дата >&НачПер "+
?(НетСФ," ГДЕ
| СчетФактураПолученный.Ссылка ЕСТЬ NULL ","");[/CODE]
Можно ли его ускорить сделав, чтобы счета-фактуры перебирались только с некоторой даты. При этом поставить условие не годится, т.к. Null-результаты тоже нужно. (Причем они как раз нужны больше)
 
D

dimetra2008

Здесь можно почитать про оптимизацию запросов
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!