|
как модифицировать запрос, чтобы он выполнялся быстрее? | ☑ | ||
---|---|---|---|---|
0
avz07
11.07.13
✎
17:50
|
люди подскажите как модифицировать этот запрос, чтобы он выполнялся быстрее,нужно очень срочно:
Запрос = Новый Запрос("ВЫБРАТЬ | Контрагенты.Ссылка КАК Контрагент |ИЗ | Справочник.Контрагенты КАК Контрагенты, | (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиОбороты.Контрагент.Ссылка КАК КонтрагентСсылка | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, , ) КАК ВзаиморасчетыСКонтрагентамиОбороты) КАК ВзаиморасчетыСКонтрагентамиОбороты, | (ВЫБРАТЬ | ТоварыПолученныеОбороты.Контрагент.Ссылка КАК КонтрагентСсылка | ИЗ | РегистрНакопления.ТоварыПолученные.Обороты(&ДатаНач, &ДатаКон, , ) КАК ТоварыПолученныеОбороты) КАК ТоварыПолученныеОбороты |ГДЕ | НЕ Контрагенты.ЭтоГруппа | И Контрагенты.Ссылка В ИЕРАРХИИ(&ГруппаКонтрагентов) | И Контрагенты.Ссылка = Контрагенты.ГоловнойКонтрагент | И НЕ Контрагенты.Ссылка В (&СЗ_Контрагенты) | И (Контрагенты.Наименование = ВзаиморасчетыСКонтрагентамиОбороты.КонтрагентСсылка.Наименование | ИЛИ Контрагенты.Наименование = ТоварыПолученныеОбороты.КонтрагентСсылка.Наименование) | |СГРУППИРОВАТЬ ПО | Контрагенты.Наименование, | Контрагенты.Ссылка | |УПОРЯДОЧИТЬ ПО | Контрагенты.Наименование"); Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)); Запрос.УстановитьПараметр("ГруппаКонтрагентов", ГруппаКонтрагентов); Запрос.УстановитьПараметр("СЗ_Контрагенты", СЗ_Контрагенты); |
|||
1
Fragster
гуру
11.07.13
✎
17:51
|
добавить Контрагенты.Ссылка В ИЕРАРХИИ(&ГруппаКонтрагентов) в условия виртуальных таблиц
|
|||
2
Fragster
гуру
11.07.13
✎
17:52
|
убрать условия по наименованию
|
|||
3
Fragster
гуру
11.07.13
✎
17:53
|
перенести условия в условия соединений - а то оптимизатор не всегда такое понимает, особенно для виртуальных таблиц
|
|||
4
Cyberhawk
11.07.13
✎
17:54
|
(1) а почему не всю ветку из "где"? (не считая наименований)
|
|||
5
Fragster
гуру
11.07.13
✎
17:55
|
(4) всю. но вообще - для такого запроса - я бы вообще соединение не делал, сделал бы объединение
, и сворачивание с отбором |
|||
6
Fragster
гуру
11.07.13
✎
17:56
|
(5)+ но переход на объединение, конечно, зависит от данных получаемых
|
|||
7
Fragster
гуру
11.07.13
✎
17:57
|
в идеале:
1 подзапрос - получение потенциального списка контрагентов (выбор из справочника в иерархии и не в списке) 2 запрос - получение данных из таблиц |
|||
8
Fragster
гуру
11.07.13
✎
17:58
|
(7)+ 2 запрос - с отбором по нашему списку контрагентов
|
|||
9
avz07
11.07.13
✎
18:05
|
спасибо! буду пробовать
|
|||
10
acsent
11.07.13
✎
18:06
|
это пи..дец какой то, а не запрос. Тут даже помочь нечем.
Все сжечь и заново построить |
|||
11
Aprobator
11.07.13
✎
18:07
|
(10) +100500 я бы сказал, вольное сочинение на тему запроса.
|
|||
12
Aprobator
11.07.13
✎
18:08
|
но не запрос.
|
|||
13
Aprobator
11.07.13
✎
18:09
|
самое интересное, что результаты обращения к виртуальным таблицам, данному запросу глубоко пофиг. И их присутствие в запросе - ребус.
|
|||
14
Fragster
гуру
11.07.13
✎
18:09
|
(10) ради прикола сделай 2 таблицы через запятую, в ГДЕ укажи условие соединения и глянь в профайлер. Там все будет так же, как и при внутреннем соединении
|
|||
15
Aprobator
11.07.13
✎
18:10
|
(14) да пофин, конечное поле выбирается только с одной таблицы.
|
|||
16
Fragster
гуру
11.07.13
✎
18:11
|
единственное что - возможен сакральный смысл в соединении по наименованию. а может и нет его.
|
|||
17
Aprobator
11.07.13
✎
18:11
|
нахрена остальные две используются - тайна покрытая мраком.
|
|||
18
Fragster
гуру
11.07.13
✎
18:11
|
(15) так это внутреннее соединение
|
|||
19
Aprobator
11.07.13
✎
18:13
|
(18) а имена псевдонимов поля в посмотреть слабо? Он только в одном месте Контрагент. А у Виртуалок Контрагент Ссылка.
|
|||
20
Aprobator
11.07.13
✎
18:13
|
а млин
|
|||
21
Aprobator
11.07.13
✎
18:13
|
он их в ГДЕ запихнул.
|
|||
22
Aprobator
11.07.13
✎
18:14
|
не увидел )
|
|||
23
Aprobator
11.07.13
✎
18:15
|
ИМХО, сначала надо получить ВТКонтрагенты. А потом тупо получить данные из виртуалок с учетом данных данной ВТ.
|
|||
24
Aprobator
11.07.13
✎
18:16
|
(7) собственно все уже предложено ( Чего то я совсем ослеп нынче (((
|
|||
25
alexhtn
11.07.13
✎
18:18
|
Убрать
И (Контрагенты.Наименование = ВзаиморасчетыСКонтрагентамиОбороты.КонтрагентСсылка.Наименование | ИЛИ Контрагенты.Наименование = ТоварыПолученныеОбороты.КонтрагентСсылка.Наименование) | |СГРУППИРОВАТЬ ПО | Контрагенты.Наименование, | Контрагенты.Ссылка Добавить ВНУТРЕННЕЕ СОЕДИНЕНИЕ |
|||
26
acsent
11.07.13
✎
18:18
|
(18) и зачем????
|
|||
27
GANR
11.07.13
✎
18:28
|
(0) Как ускорить? - выкинуть этот запрос вообще и написать в данную ветку какую задачу должен решать запрос.
|
|||
28
avz07
11.07.13
✎
18:48
|
у меня есть обработка, которая должна выдавить в результате контрагентов без актов сверок за определенный период, должны учитываться клиенты которые имеют (еще не вернули) тару, оборудование. Вот код того что я сделал:
Процедура ПриОткрытии() ДатаНач = НачалоМесяца(ТекущаяДата()); ДатаКон = ТекущаяДата(); ГруппаКонтрагентов = Справочники.Контрагенты.НайтиПоКоду("1178"); КонецПроцедуры Процедура ДействияФормыСформировать(Кнопка) Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | АктСверкиВзаиморасчетов.Контрагент |ИЗ | Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов |ГДЕ | АктСверкиВзаиморасчетов.Дата МЕЖДУ &ДатаНач И &ДатаКон | И АктСверкиВзаиморасчетов.Проведен | И АктСверкиВзаиморасчетов.Контрагент В ИЕРАРХИИ(&ГруппаКонтрагентов)"); Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)); Запрос.УстановитьПараметр("ГруппаКонтрагентов", ГруппаКонтрагентов); СЗ_Контрагенты = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Контрагент"); // ---------------------------------------------------------------------------- Запрос = Новый Запрос("ВЫБРАТЬ | Контрагенты.Ссылка КАК Контрагент |ИЗ | Справочник.Контрагенты КАК Контрагенты, | (ВЫБРАТЬ | ВзаиморасчетыСКонтрагентамиОбороты.Контрагент.Ссылка КАК КонтрагентСсылка | ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, , ) КАК ВзаиморасчетыСКонтрагентамиОбороты) КАК ВзаиморасчетыСКонтрагентамиОбороты, | (ВЫБРАТЬ | ТоварыПолученныеОбороты.Контрагент.Ссылка КАК КонтрагентСсылка | ИЗ | РегистрНакопления.ТоварыПолученные.Обороты(&ДатаНач, &ДатаКон, , ) КАК ТоварыПолученныеОбороты) КАК ТоварыПолученныеОбороты |ГДЕ | НЕ Контрагенты.ЭтоГруппа | И Контрагенты.Ссылка В ИЕРАРХИИ(&ГруппаКонтрагентов) | И Контрагенты.Ссылка = Контрагенты.ГоловнойКонтрагент | И НЕ Контрагенты.Ссылка В (&СЗ_Контрагенты) | И (Контрагенты.Наименование = ВзаиморасчетыСКонтрагентамиОбороты.КонтрагентСсылка.Наименование | ИЛИ Контрагенты.Наименование = ТоварыПолученныеОбороты.КонтрагентСсылка.Наименование) | |СГРУППИРОВАТЬ ПО | Контрагенты.Ссылка | |УПОРЯДОЧИТЬ ПО | Контрагенты.Наименование"); Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач)); Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон)); Запрос.УстановитьПараметр("ГруппаКонтрагентов", ГруппаКонтрагентов); Запрос.УстановитьПараметр("СЗ_Контрагенты", СЗ_Контрагенты); ТЗ.Загрузить(Запрос.Выполнить().Выгрузить()); КонецПроцедуры |
|||
29
ilpar
11.07.13
✎
18:50
|
(28)
застрелись |
|||
30
ilpar
11.07.13
✎
18:51
|
столько курсов в инете, все равно...
|
|||
31
Fragster
гуру
11.07.13
✎
19:13
|
вопрос. а сейчас оно выдает то, что нужно?
|
|||
32
avz07
11.07.13
✎
19:45
|
да. выводит, то что надо. но медленно.
|
|||
33
avz07
11.07.13
✎
20:10
|
на будущее, подскажите какую-то литературу по запросам, желательно чтобы была доступно написана
|
|||
34
Fragster
гуру
11.07.13
✎
20:42
|
||||
35
FIXXXL
11.07.13
✎
21:25
|
перенести всю отборочную тряхомудь в условия виртуальной таблицы и убрать сравнения по наименованиям
с фоксПро что ли переходишь? |
|||
36
avz07
12.07.13
✎
16:15
|
(34) спасибо. ссылка супер!
|
|||
37
IBTM
12.07.13
✎
16:17
|
Держи, благодарить не надо:
ВЫБРАТЬ | Контрагенты.Ссылка КАК Контрагент |ИЗ | Справочник.Контрагенты КАК Контрагенты, ИЗ | РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(&ДатаНач, &ДатаКон, , ) КАК ВзаиморасчетыСКонтрагентамиОбороты) КАК ВзаиморасчетыСКонтрагентамиОбороты, |
|||
38
Бертыш
12.07.13
✎
16:27
|
(36) Вот ещё ссылочка http://www.1c.ru/rus/partners/training/uc3/course.jsp?id=354
|
|||
39
GANR
15.07.13
✎
19:40
|
(33) http://www.sql-ex.ru/ - отличный тренажер.
|
|||
40
avz07
22.07.13
✎
17:49
|
люди, спасибо за ваше внимание и за ссылочку. сделай как хотел. работает точно и быстро. осознал что-то новое.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |