|
Оптимизация характеристик в запросе | ☑ | ||
---|---|---|---|---|
0
Powerfool
04.03.15
✎
11:02
|
Доброго всем времени суток!
У меня не срочный но вполне обстоятельный вопрос к мастерам и гроссмейстерам скд. Есть отчет, в котором я из запроса получаю данные, в запросе я использую характеристики (вполне стандартная схема: есть объекты (Спр) у них есть хар-ки (ПВХ) и их значения (РС)). Запрос довольно долго соображает и я подозреваю что это именно из-за характеристик, ибо по структуре своей он не очень уж сложный. С характеристиками никогда раньше не работал, поэтому чего то могу не знать и хочу спросить: Есть ли способы оптимизации этой фичи? |
|||
1
Powerfool
04.03.15
✎
11:22
|
вира
|
|||
2
Гёдза
04.03.15
✎
11:24
|
не правильно ты угадал. дело не в характеристиках.
Левое соединение по индексу не затратная процедура |
|||
3
Powerfool
04.03.15
✎
11:28
|
(2) Можно поподробнее, не уловил связи? Причем тут левое соединение по индексу?
|
|||
4
Defender aka LINN
04.03.15
✎
11:33
|
(3) Потому что характеристики - это левое соединение.
Смотри результирующий текст запроса, думай |
|||
5
ShoGUN
04.03.15
✎
11:37
|
(3) Запрос покажи, тебе покажут левое соединение.
|
|||
6
Powerfool
04.03.15
✎
11:43
|
(5) Весь запрос приводить не буду чё зря пиксели расходовать, вот последний пакет
//////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Основная.Объект, Основная.Вид, Основная.Контакт, Основная.Адрес, Основная.ВидКЛ, Основная.КонтактКЛ, Основная.Характеристика, Основная.Значение, Основная.КонтактноеЛицоКонтрагента, Основная.Комментарий, Основная.КомментарийКЛ, Основная.ОборудованиеИПО, Основная.Регистратор, ДК_ЦепочкиСобытий.Событие КАК КрайнееСобытие, ПРЕДСТАВЛЕНИЕ(ДК_ЦепочкиСобытий.Событие.СостояниеСобытия) КАК СостояниеСобытияСтрокой, ПРЕДСТАВЛЕНИЕ(ДК_ЦепочкиСобытий.Событие.НачалоСобытия) КАК СобытиеНачалоСобытияСтрокой, КоличествоСобытийПоОснованию.КоличествоСобытий, ПРЕДСТАВЛЕНИЕ(КоличествоСобытийПоОснованию.КоличествоСобытий), Основная.Контрагент ИЗ Основная КАК Основная ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ДК_ЦепочкиСобытий.Основание КАК Основание, МАКСИМУМ(ДК_ЦепочкиСобытий.Регистратор.Дата) КАК РегистраторДата ИЗ РегистрСведений.ДК_ЦепочкиСобытий КАК ДК_ЦепочкиСобытий СГРУППИРОВАТЬ ПО ДК_ЦепочкиСобытий.Основание) КАК КрайниеСобытие ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДК_ЦепочкиСобытий КАК ДК_ЦепочкиСобытий ПО КрайниеСобытие.Основание = ДК_ЦепочкиСобытий.Основание И КрайниеСобытие.РегистраторДата = ДК_ЦепочкиСобытий.Регистратор.Дата ПО Основная.Регистратор = КрайниеСобытие.Основание ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ДК_ЦепочкиСобытий.Основание КАК Основание, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ДК_ЦепочкиСобытий.Событие) КАК КоличествоСобытий ИЗ РегистрСведений.ДК_ЦепочкиСобытий КАК ДК_ЦепочкиСобытий СГРУППИРОВАТЬ ПО ДК_ЦепочкиСобытий.Основание) КАК КоличествоСобытийПоОснованию ПО Основная.Регистратор = КоличествоСобытийПоОснованию.Основание {ХАРАКТЕРИСТИКИ ТИП(Справочник.ДК_ОбъектыРабот) ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.ДК_ХарактеристикиОбъектовРабот ПОЛЕКЛЮЧА Ссылка ПОЛЕИМЕНИ Представление ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ДК_ХарактеристикиОбъектовРабот.СрезПоследних ПОЛЕОБЪЕКТА Объект ПОЛЕВИДА Характеристика ПОЛЕЗНАЧЕНИЯ Значение } |
|||
7
Powerfool
04.03.15
✎
11:49
|
(4) Смотрю, думаю. Слушаю Ваши мнения, думаю. Может я такой глупый и книг не читавший, так скиньте ссылочку плиз где есть откуда взять?
|
|||
8
тарам пам пам
04.03.15
✎
11:55
|
(6) Попробуй от ДК_ЦепочкиСобытий.Регистратор.Дата избавиться. Наверняка ведь регистратор - составной тип из кучи документов.
|
|||
9
Powerfool
04.03.15
✎
12:01
|
(8) Составной, только не такой и ужасный, там пока только 2 дока, но за совет все равно спасибо, учту
|
|||
10
ShoGUN
04.03.15
✎
12:02
|
Чтобы быть уверенным - я бы план запроса в профайлере глянул. Хотя подозреваю, что (8) прав и происходит джоин с кучей таблиц.
|
|||
11
Powerfool
04.03.15
✎
12:05
|
(10) Схема примерно такая: два пакета, второй в (6), а в первом два подзапроса, в каждом по нескольку вложенных запросов. Пробовал менять вложенные запросы на пакеты запросов с индексацией полей, по которым потом джоин делаю, но профита не заимел, отчет один хрен долго кубатурит
|
|||
12
ShoGUN
04.03.15
✎
12:23
|
(11) Попробуй по отдельности запросы пакета выполнить, хоть будет понятно, в каком тормоза. Описание "два подзапроса, в каждом по нескольку вложенных запросов." тоже на первый взгляд не очень быстро звучит.
|
|||
13
Powerfool
04.03.15
✎
12:30
|
(12) а "Пробовал менять вложенные запросы на пакеты запросов с индексацией полей, по которым потом джоин делаю" быстрее звучит. Разницы я не ощутил, вот проблема
|
|||
14
ShoGUN
04.03.15
✎
12:35
|
(13) Так какой запрос пакета тормозит-то? Первый? А почему ты его ещё не показал?
|
|||
15
Powerfool
04.03.15
✎
12:37
|
(14) Тоже этим вопросом задался. Каюсь сам дурак даже не посмотрел. Щас буду изучать
|
|||
16
lEvGl
гуру
04.03.15
✎
12:38
|
если речь о ЗначенияСвойствОбъектов, то там Объект Очень составной, с ним бывают проблемы
|
|||
17
ShoGUN
04.03.15
✎
12:40
|
(16) Через характеристики СКД довольно быстро работает, проверил на УТ сейчас.
|
|||
18
ShoGUN
04.03.15
✎
12:41
|
(15) >Каюсь сам дурак даже не посмотрел.
Ник оправдываешь? :) Чаще всего тормозят составные типы, хотя я видел и другие извраты. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |