Имя: Пароль:
1C
1С v8
Помогите переписать (оптимизировать) запрос...
0 ДенисЧ
 
19.08.11
15:04
Вот такой идиотский запрос:

   |Выбрать *
   |Поместить ВремТаб
   |из &тч Как ТЧ;
   |
   |Выбрать УникальныйНомерРазмера,
   |    Сумма(КоличествоВыпущено) Как КоличествоВыпущено,
   |    Сумма(КоличествоПродано) Как КоличествоПродано,
   |    Сумма(КоличествоБрак) Как КоличествоБрак,
   |    Сумма(КоличествоВозврат) Как КоличествоВозврат
   |из (
   |Выбрать
   |    док.СерияПродукции Как УникальныйНомерРазмера, док.Количество Как КоличествоВыпущено, 0 как КоличествоПродано, 0 Как КоличествоБрак, 0 Как КоличествоВозврат
   |Из Документ.ОтчетПроизводстваЗаСмену.Продукция Док, ВремТаб
   |Где док.Ссылка.Проведен = &Ист
   |И док.СерияПродукции.Код = ВремТаб.НомерРазмера
   |
   |Объединить Все
   |
   |Выбрать док.СерияНоменклатуры Как УникальныйНомерРазмера, 0 Как КоличествоВыпущено, док.Количество Как КоличествоПродано, 0 Как КоличествоБрак, 0 Как КоличествоВозврат
   |Из Документ.РеализацияТоваровУслуг.Товары Док, ВремТаб
   |Где док.Ссылка.Проведен = &Ист
   |И док.СерияНоменклатуры.Код = ВремТаб.НомерРазмера
   |
   |Объединить Все
   |
   |Выбрать док.СерияНоменклатуры Как УникальныйНомерРазмера, 0 Как КоличествоВыпущено, 0 как КоличествоПродано, док.Количество Как КоличествоБрак, 0 Как КоличествоВозврат
   |Из Документ.ТребованиеНакладная.Материалы Док, ВремТаб
   |Где док.Ссылка.Проведен = &Ист
   |И док.СерияНоменклатуры.Код = ВремТаб.НомерРазмера
   |И док.СчетЗатрат = &СчетБрак
   |И док.Номенклатура = док.Продукция
   |
   |Объединить Все
   |
   |Выбрать док.СерияНоменклатуры Как УникальныйНомерРазмера, 0 Как КоличествоВыпущено, 0 как КоличествоПродано, 0 Как КоличествоБрак, док.Количество Как КоличествоВозврат
   |Из Документ.ВозвратТоваровОтПокупателя.Товары Док, ВремТаб
   |Где док.Ссылка.Проведен = &Ист
   |И док.СерияНоменклатуры.Код = ВремТаб.НомерРазмера
   |) Как ТабРез
   |Сгруппировать по УникальныйНомерРазмера


Опой чувствую, что кривой донельзя... Занимает половину времени заполнения данных...
Как бы его переделать?
108 ДенисЧ
 
19.08.11
17:23
А скуль всё равно по кластерному индексу бегает...
109 Ёпрст
 
19.08.11
17:35
вот такой сколько выполняется ?

Выбрать *
   |Поместить ВремТаб
   |из &тч Как ТЧ;
   |
   |Выбрать Различные Ссылка Как Серия
   |Поместить ВремСерии
   |Из Справочник.СерииНоменклатуры
   |Где Код В (Выбрать ВремТаб.НомерРазмера из ВремТаб);
   |
   |Выбрать УникальныйНомерРазмера,
   |    Сумма(КоличествоВыпущено) Как КоличествоВыпущено,
   |    Сумма(КоличествоПродано) Как КоличествоПродано,
   |    Сумма(КоличествоБрак) Как КоличествоБрак,
   |    Сумма(КоличествоВозврат) Как КоличествоВозврат
   |из (
   |Выбрать
   |    док.СерияПродукции Как УникальныйНомерРазмера, док.Количество Как КоличествоВыпущено, 0 как КоличествоПродано, 0 Как КоличествоБрак, 0 Как КоличествоВозврат
   |Из Документ.ОтчетПроизводстваЗаСмену.Продукция Док
   |Где док.Ссылка.Проведен
   |
   |Объединить Все
   |
   |Выбрать док.СерияНоменклатуры,0,док.Количество,0,0
   |Из Документ.РеализацияТоваровУслуг.Товары Док
   |Где док.Ссылка.Проведен
   |И док.СерияНоменклатуры = ВремСерии.Серия
   |
   |Объединить Все
   |
   |Выбрать док.СерияНоменклатуры,0,0,док.Количество,0
   |Из Документ.ТребованиеНакладная.Материалы Док
   |Где
   |    И док.Ссылка.Проведен
   |    И (док.СчетЗатрат = &СчетБрак)
   |    И (док.Номенклатура = док.Продукция)
   |
   |Объединить Все
   |
   |Выбрать док.СерияНоменклатуры,0,0,0,док.Количество
   |Из Документ.ВозвратТоваровОтПокупателя.Товары Док
   |Где док.Ссылка.Проведен
   |) Как ТабРез
   |Внутреннее Соединение ВремСерии
   |    по ТабРез.УникальныйНомерРазмера = ВремСерии.Серия
   |Сгруппировать по ТабРез.УникальныйНомерРазмера
110 artbear
 
19.08.11
17:38
(0) А если по одной таблице документов оставить и посмотреть, какой док самый тормозной? ну или в плане изучить?
Какой?
111 Ёпрст
 
19.08.11
17:39
(110) у него Документ.ТребованиеНакладная.Материалы , там где
условие на док.Номенклатура = док.Продукция
112 artbear
 
19.08.11
17:41
(109) ИМХО вместо док.Ссылка.Проведен нужно явно прописать соединение
да и по Булевскому значению индекс никакой, поэтому тупой поиск :(
т.е. это условие вообще юзать только в конце нужно :(
сначала что-то более подробное.
113 artbear
 
19.08.11
17:47
(All) Небольшой ОФФ.
Периодически я задаюсь вопросом: почему 1С не выполнила денормализацию основной таблицы документа и табличных частей в  плане Проведен и Даты.
Ведь практически любые запросы по ТЧ документов юзают эти два реквизиты, т.е. постоянные соединения.
Дата еще сойдет, по ней индекс нормально может строиться,
но вот Проведен только через поиск работает :(
Понятно, что сложность работы напрямую с таблицами возрастает, типа нужно помнить, что при обновлении основной таблицы и таб.части нужно обновлять.
Но и это можно было загнать в доку и всех обязать юзать.
Или я сильно не прав? :(
114 DrHiHi
 
19.08.11
17:49
это на всех так пятница влияет или луна??
115 ДенисЧ
 
19.08.11
21:16
(112) "сначала что-то более подробное"
Что именно?
116 artbear
 
20.08.11
09:41
(115) Я говорил о реквизитах, значений которых больше, и по которым скуль будет юзать индекс, а не тупой поиск.
Например, отбор по товару и т.п.
а уже после этого можно заюзать Проведен
117 artbear
 
20.08.11
09:54
Т.е., например, сделать так
[code]
Выбрать * ИЗ (Выбрать док.Ссылка, док.СерияНоменклатуры,0,0,док.Количество,0
   |Из Документ.ТребованиеНакладная.Материалы Док
   |Где
   |    (док.СчетЗатрат = &СчетБрак)
   |    И (док.Номенклатура = док.Продукция)
) КАК Таблица
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК Док
По Таблица.Ссылка = Док.Ссылка
ГДЕ
  док.Проведен
[/code]
Возможно, что и счет затрат можно выкинуть во внешний запрос
118 artbear
 
20.08.11
09:56
ОФФ забыл, как оформлять код :(
В правилах НИФИГА нету, помню, что Asmody показывал на форуме, что и как, но ветку не найду :(
Тест
<code>Тестовый код 1</code>
124 artbear
 
20.08.11
10:04
(117) +
Т.е., например, сделать так

Выбрать * ИЗ (Выбрать док.Ссылка, док.СерияНоменклатуры,0,0,док.Количество,0
   |Из Документ.ТребованиеНакладная.Материалы Док
   |Где
   |    (док.СчетЗатрат = &СчетБрак)
   |    И (док.Номенклатура = док.Продукция)
) КАК Таблица
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК Док
По Таблица.Ссылка = Док.Ссылка
ГДЕ
  док.Проведен
125 artbear
 
20.08.11
10:07
(124) 1. Можно и Счет затрат перенести во внешний запрос
2. А можно и внутреннее соединение сделать по условию

Выбрать * ИЗ (Выбрать док.Ссылка, док.СерияНоменклатуры,0,0,док.Количество,0
   Из Документ.ТребованиеНакладная.Материалы Док
   Где
       //(док.СчетЗатрат = &СчетБрак) И
       (док.Номенклатура = док.Продукция)
) КАК Таблица
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК Док
По Таблица.Ссылка = Док.Ссылка
И   док.Проведен
Где
  (Таблица.СчетЗатрат = &СчетБрак)

В общем, нужно проверять быстродействие.
ИМХО Один из этих способов точно быстрее твоего :)
126 ДенисЧ
 
20.08.11
10:10
Так.сЪ.
Продираясь сквозь попытки.
У меня соединяются несколько документов.Счёт затрат есть только в одном. Так что выносить не получиться
127 ДенисЧ
 
20.08.11
10:11
(116) Всех данных у меня на момент запроса - только номер серии. Можно выдирать номенклатуру по ней, но уже сделал выдирание серии. Сомневаюсь, что можно ещё повысисть скорость.
128 artbear
 
20.08.11
10:12
(126) 1. Я разложил один твой запрос из вложенного, добавив еще один уровень вложенности.
2. Если (док.Номенклатура = док.Продукция) часто выполняется, то выносить нужно его, а не счетБрака
129 artbear
 
20.08.11
10:14
По серии все правильно, но можно еще попробовать ускориться.
Если Документ.ТребованиеНакладная.Материалы самая большая таблица, изучи условия по ней.
Например, сделай группировки по Ссылка.Проведен, СчетЗатрат и Док.Номенклатура = Док.Продукция и посчитай количество элементов по их различным значениям.
Там, где больше всего разных вариантов или меньше элементов, и можно делать внутреннее условие, а потом уже остальные во внешнем
130 artbear
 
20.08.11
10:17
(129) +
Ну т.е упрощенно

Выбрать Количество(Таблица.Ссылка), Таблица.СчетЗатрат
Из Документ.ТребованиеНакладная.Материалы КАК Таблица
ГРУППИРОВАТЬ ПО Таблица.СчетЗатрат

и по остальным условия сделать аналогичные запросы
131 ДенисЧ
 
20.08.11
10:18
(128) если ты не заметил, то номенклатура=продукция проверяется только для одного вида документов. И выносить это во внешнее условие - ни никакого смысла нет.
132 artbear
 
20.08.11
10:18
(127) Жду ответа на поставленные вопросы :)
133 ДенисЧ
 
20.08.11
10:19
(129) уже приводил проценты.
Проведён - 95%
Счет затрат - 75%
номенклатура=Продукция = 25%
134 artbear
 
20.08.11
10:19
Ты пропустил историю маленько :)
110 Я (0) А если по одной таблице документов оставить и посмотреть, какой док самый тормозной? ну или в плане изучить?
Какой?
111 Ёпрст3
111 - 19.08.11 - 17:39
(110) у него Документ.ТребованиеНакладная.Материалы , там где
условие на док.Номенклатура = док.Продукция
===
Вот я и начал изучать работу по этой таблице :)
отсюда и рекомендации
135 ДенисЧ
 
20.08.11
10:20
(134) дык отсюда и пляшу. Причём смотрю планы запроса по sql. Это всё выше есть.
136 Jofa
 
20.08.11
10:23
Откуда у тебя тч берётся??
137 ДенисЧ
 
20.08.11
10:24
(136) из внешнего запроса к ораклю.
Нет, на .14 переходить пока не собираюсь.
Выдирается через ADO/
138 artbear
 
20.08.11
10:25
(133) (134) 1Это я видел
2. смотри, у тебя во вложенном запросе есть код
Объединить Все
   
   Выбрать док.СерияНоменклатуры,0,0,док.Количество,0
   Из Документ.ТребованиеНакладная.Материалы Док
   Где
       И док.Ссылка.Проведен
       И (док.СчетЗатрат = &СчетБрак)
       И (док.Номенклатура = док.Продукция)

Попробуй заменить его на следующий
Объединить Все
   
   Выбрать док.СерияНоменклатуры,0,0,док.Количество,0
   ИЗ (Выбрать док.Ссылка, док.СерияНоменклатуры,док.Количество
   Из Документ.ТребованиеНакладная.Материалы Док
   Где
       (док.Номенклатура = док.Продукция)
) КАК Таблица
)КАК Док
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК ДокШапка
По Таблица.Ссылка = ДокШапка.Ссылка
И   ДокШапка.Проведен
Где
  (док.СчетЗатрат = &СчетБрак)
139 ДенисЧ
 
20.08.11
10:25
(138) А где я тебе счет затрат возьму в ОПзС? И зачем он там?
140 ДенисЧ
 
20.08.11
10:26
Стоп, понял. Нет. Это будет ещё хуже.
141 ДенисЧ
 
20.08.11
10:26
Хотя бы потому, что я ссылку на документ наружу не тащу, не нужен он там, на руже.
142 artbear
 
20.08.11
10:28
(139) Упс, счетЗатрат забыл в таблицу добавить :)
(140) (141) не понял :(
(140) Напомни, какой запрос у тебя сейчас самый быстрый по результатам (общий запрос) ?
143 ДенисЧ
 
20.08.11
10:31
(142)
3. (78)
2. Объединяются 4 документа. Из них наружу вытаскиваются только количества. Вытаскивать ещё что-то не нужно. Зачем ещё одно условие и ещё один вложенный запрос? Скульное предложение я показал. В 77 я бы сделал руками ещё индекс и алды. А тут...
144 artbear
 
20.08.11
10:36
(143) Значит, самый тормоз здесь? ты же таблицы по отдельности тестил?

Выбрать док.СерияНоменклатуры Как УникальныйНомерРазмера, 0 Как КоличествоВыпущено, 0 как КоличествоПродано, док.Количество Как КоличествоБрак, 0 Как КоличествоВозврат
   Из Документ.ТребованиеНакладная.Материалы Док
   Внутреннее Соединение ВремСерии
       по (Док.СерияНоменклатуры = ВремСерии.Серия)
       И док.Ссылка.Проведен
       И (док.СчетЗатрат = &СчетБрак)
       И (док.Номенклатура = док.Продукция)

Интересно, как 1С транслирует запрос с Внутренним соединением по одной таблице и неявным левым соединением по другой?
145 ДенисЧ
 
20.08.11
10:38
(144) ага, здесь. Выше приведены тормозные предикаты из плана запроса.
Если исключаю ТрН, то всё летает.
Хотя полторы секунды на заполнение таблицы - не то время, чтобы рвать *опу, но хочется сделать красиво.
146 Jofa
 
20.08.11
10:40
Может стоит сперва документы выбрать поместить их в ВТ а уже потом делать внутринее соеденение.
147 ДенисЧ
 
20.08.11
10:42
(146) какие все? По сериям? Или как?
148 Jofa
 
20.08.11
10:45
Выбрать
док.СерияНоменклатуры Как УникальныйНомерРазмера,
док.Количество Как КоличествоБрак,
0 Как КоличествоВыпущено,
0 как КоличествоПродано,
0 Как КоличествоВозврат
ПОместитю ВТ_Док1
Из Документ.ТребованиеНакладная.Материалы Док
   ГДЕ
       И док.Ссылка.Проведен
       И док.СчетЗатрат = &СчетБрак
       И док.Номенклатура = док.Продукция
149 artbear
 
20.08.11
10:45
Тогда сначала выбери материалы из ТРН по сериям (внутреннее соединение) (там много совпадений?) во внутреннем запросе, а во внешнем уже проверяй условия по продукции, счету и проведению

Выбрать док.СерияНоменклатуры Как УникальныйНомерРазмера, 0 Как КоличествоВыпущено, 0 как КоличествоПродано, док.Количество Как КоличествоБрак, 0 Как КоличествоВозврат
ИЗ (
Выбрать док.СерияНоменклатуры Как УникальныйНомерРазмера, док.Количество, док.Ссылка, док.СчетЗатрат, док.Номенклатура, док.Продукция
   Из Документ.ТребованиеНакладная.Материалы Док
   Внутреннее Соединение ВремСерии
       по (Док.СерияНоменклатуры = ВремСерии.Серия)) КАК Док
ГДЕ
       док.Ссылка.Проведен
       И (док.СчетЗатрат = &СчетБрак)
       И (док.Номенклатура = док.Продукция)
150 artbear
 
20.08.11
10:46
(148) Не прав, автор уже писал, что как раз это запрос и есть самый тормоз :(
151 ДенисЧ
 
20.08.11
10:47
(149) мда...
Попробую в понедрельник...

Но такое через*опие...

И нафига я на это подписался...
152 ДенисЧ
 
20.08.11
10:47
Спасибо за советы :-)
153 Jofa
 
20.08.11
10:47
Хотя Серии можно выгрузить в массив и подставлять в документы как условие :

Выбрать
док.СерияНоменклатуры Как УникальныйНомерРазмера,
док.Количество Как КоличествоБрак,
0 Как КоличествоВыпущено,
0 как КоличествоПродано,
0 Как КоличествоВозврат

ПОместитю ВТ_Док1
Из Документ.ТребованиеНакладная.Материалы Док
   ГДЕ
       И док.Ссылка.Проведен
       И док.СчетЗатрат = &СчетБрак
       И док.Номенклатура = док.Продукция
       И Док.СерияНоменклатуры В (&Серии)
154 Asirius
 
20.08.11
10:47
(0) замени условие

где док.СерияНоменклатуры.Код = ВремТаб.НомерРазмера

на что-то типа

где док.СерияНоменклатуры в СписокСерий
155 ДенисЧ
 
20.08.11
10:48
(149) Про совпадения. Как я уже писал :-), совпадений не много. Не так уж и много брака у нас.
Уже думаю, может, доп признак-реквизит вводить...
156 ДенисЧ
 
20.08.11
10:49
(154) "всю ветку не читал, но скажу мнение"?
Уже сделано.
157 Jofa
 
20.08.11
10:50
Ну как работает??
158 artbear
 
20.08.11
10:50
(156) Проверь трансляцию (144) в скуль, ИМХО будет что-то очень корявое :(
159 artbear
 
20.08.11
10:51
(155) ты же писал, что СчетБрака 75% ? или как раз 25 это брак, все остальное нет?
160 ДенисЧ
 
20.08.11
10:51
Все проверки в понедельник.
Из дома мне не хочется лезть в это *овно... Да и некомфортно это делать по удалёнке...

Продолжим дискуссию через 46 часов...
161 ДенисЧ
 
20.08.11
10:52
(159) 75% - брак не готовой продукции, то есть Номенклатура != продукция.
162 ДенисЧ
 
20.08.11
10:53
хотя... Блин, вспомнил, там же меняться будет всё...

Ой, геморрой на мою голову...

Вообще все условия менять придётся для брака :-(((
163 artbear
 
20.08.11
10:54
(161) А я спрашивал про группировки немного другое -
сколько процентов об общего числа записей в ТРН.Материалы занимается вариант группировку по Счету = СчетБрака?
164 artbear
 
20.08.11
10:55
Если брака мало, значит, самый внутренний запрос делаем по нему, а во внешнем проверяем все остальные условия
165 ДенисЧ
 
20.08.11
10:55
(163) процентов 10, если мне склероз не изменяет. Может, чуть меньше. Надо запросы писать и ОТК спрашивать.
166 artbear
 
20.08.11
10:56
(164) + если брака много, пишем служебку и кого-нибудь наказываем :)
167 ДенисЧ
 
20.08.11
10:56
(164) хм.... А это вариант... Надо будет проверить, как до базы доберусь...
168 ДенисЧ
 
20.08.11
10:56
(166) это и без меня делается :-)
Работяги уже стонут и так от наказаний...
169 artbear
 
20.08.11
10:56
(165) а индекс по счету есть в таблице?
170 ДенисЧ
 
20.08.11
10:58
(169) И опять же :-))))
Есть по всем полям, которые участвуют в запросе
171 artbear
 
20.08.11
10:59
(167) я потому и спрашивал про группировки и количества в (129) и (130)
группируем вариант все отдельно (
1 запрос = проведен (Истина,Ложь)
2 запрос = счет (все варианты)
3 запрос = товар = продукция (Истина, Ложь)
и смотрим, сколько процентов приходится в 1 и 3 на Истину, а в 2 на наш счет брака
172 ДенисЧ
 
20.08.11
11:00
(171) ну, эти цифры известны
1. 98%
2. 25%
3. 10%

И что это даст?
173 artbear
 
20.08.11
11:01
Наверное, лучше такие запросы сделать

Выбрать Количество(Таблица.Ссылка) / ТабОбщая.Количество КАК Процент,
//каждый вариант условия в отдельном запросе
Таблица.СчетЗатрат
Из Документ.ТребованиеНакладная.Материалы КАК Таблица
ГРУППИРОВАТЬ ПО Таблица.СчетЗатрат
ЛЕВОЕ СОЕДИНЕНИЕ
(
Выбрать Количество(Таблица.Ссылка) КАК Количество
Из Документ.ТребованиеНакладная.Материалы КАК Таблица
) КАК ТабОбщая
По Истина
174 ДенисЧ
 
20.08.11
11:02
(173) зачем? Я представляю себе общуюю статистику по базе...
175 artbear
 
20.08.11
11:04
(172) вот отсюда и делаем выбор.
п.1 (проведен) сразу откидываем во внешний запрос, он совсем тормоз и будет тупой поиск
п.2 (счет затрат) очень интересен, всего 25% и простейшее условие - поле = константе, идеал для скуля
п.3 (товар = продукция) - совпадений мало, но здесь нужно уже смотреть, как скуль выполнит это условие.
Итог во внутренний запрос кидаем п.2 или 3, а во внешнем проверяем все остальное.
я склоняюсь все-таки к проверке счета.
176 artbear
 
20.08.11
11:04
(174) Представление часто расходится с точным значением,
лучше проверь лишний раз :)
тем более, это несложно и очень быстро
177 ДенисЧ
 
20.08.11
11:07
(175) я уже согласился с твоими предложениями :-) В понедельник проверю
(176) не, тут не расходится. В последнее время мне много пришлось потрахаться с браками, поэтому я имею представление.
178 artbear
 
20.08.11
11:08
(175) (на всякий случай уточню) + т.е. я больше склоняюсь к варианту
во вложенном запросе идет внутреннее соединение по сериям и проверка на счет затра, а во вложенном - проведен и товар = номенклатура
и это результат объединяем через Объединить все
179 ДенисЧ
 
20.08.11
11:09
(178) угу. Логично. У меня мозги замылились и не видят, казалось бы, очевидных вариантов. Спасибо за советы. Проверим.
180 artbear
 
20.08.11
11:10
Еще напомню: напиши, плиз, как 1С транслирует в скуль твой текущий вариант

Выбрать Док.*
Из Документ.ТребованиеНакладная.Материалы Док
   |Внутреннее Соединение ВремСерии
   |    по (Док.СерияНоменклатуры = ВремСерии.Серия)
   |    И док.Ссылка.Проведен
   |    И (док.СчетЗатрат = &СчетБрак)
   |    И (док.Номенклатура = док.Продукция)

интересно посмотреть на работу 1С по генерации кода скуля для таких случаев :)
181 artbear
 
20.08.11
11:12
(179) Кстати, чем смотришь запрос скуля и планы? консолью с трассировкой (есть на ИС) или еще как?
182 ДенисЧ
 
20.08.11
11:12
(180) Это я смотрел, ничего интересного. 3 юниона.
183 artbear
 
20.08.11
11:14
(182) а подробнее? какие юнионы? по каким условиям? что с чем?
184 ДенисЧ
 
20.08.11
11:16
(183) шапка документа с таблицей, таблица с справочником серий и таблица сама с собой
(181) ентерпрайз-манагером, вылавливая запросы через профайлер.
185 artbear
 
20.08.11
11:17
(184) ИМХО Это долго и уже устарело :(
лучше на ИС возьми консоль с трассировкой (в поиск с таким названием), все будет просто и удобно.
Рекомендую.
186 Jofa
 
20.08.11
11:19
(185) ЧТо можно там позыреть в общем
187 Jofa
 
20.08.11
11:19
+ ИС = ИТС??
188 ДенисЧ
 
20.08.11
11:20
189 artbear
 
20.08.11
11:20
Как раз планы и можно посмотреть! очень удобно :)
+ код, генерируемый 1С.
фактически то же самое, что вручную смотрим в профайлере.
если юзать в рабочей базе, то будут видны все запросы других пользователей.
190 ДенисЧ
 
20.08.11
11:21
191 Jofa
 
20.08.11
11:22
(189) Крута .. Нада по юзать
192 artbear
 
20.08.11
11:22
(188) нет, другая - http://infostart.ru/public/56973/
вот еще интересная статья по индексам, где приводится пример ее использования - http://infostart.ru/public/81694/
193 ДенисЧ
 
20.08.11
11:23
(192) хм... Обязательно проверю...
194 Jofa
 
20.08.11
11:27
Она могет просматривать ВТ ??
195 Axel2009
 
20.08.11
11:58
(0) в общем у меня тока один вариант. заходишь в скуль и рисуешь составной индекс на поля счетзатрат, серия..

скока выполняется запрос
Выбрать КОЛИЧЕСТВО(*)
  Из Документ.ТребованиеНакладная.Материалы Док
  Внутреннее Соединение ВремСерии
       по (Док.СерияНоменклатуры = ВремСерии.Серия)
       И док.Ссылка.Проведен
?
и
Выбрать КОЛИЧЕСТВО(*)
  Из Документ.ТребованиеНакладная.Материалы Док
ГДЕ док.Ссылка.Проведен
       И (док.СчетЗатрат = &СчетБрак)
196 ДенисЧ
 
20.08.11
12:00
(195) допиндексы составлять -пока не вариант. 8ка идёт на стадии разработки и внедрения.
А так - я бы даже не парился...

Проверить на скорость запрос - только в понедельник.
197 ILM
 
гуру
20.08.11
19:34
Думал, сами найдете самое быстрое решение, но вижу скоро пойдете на третью сотню...
Пока даю подсказку: СУММА() - это агрегатная функция!!!
198 ДенисЧ
 
20.08.11
19:36
(197) гениально!!
199 ILM
 
гуру
20.08.11
19:42
Ага - засунь его во внутрь его!!!
Записей будет намно-о-о-го меньше)))
200 ILM
 
гуру
20.08.11
19:48
ВЫБРАТЬ ТЧ;
ВЫБРАТЬ СЕРИЯ, СУММА(), СУММА(), СУММА()
ИЗ
(ВЫБРАТЬ СЕРИЯ, СУММА(), 0, 0
ИЗ ...
СГРУППИРОВАТЬ ПО СЕРИЯ
ОБЪЕДЕНИТЬ ВСЕ
ВЫБРАТЬ СЕРИЯ, 0, СУММА(), 0
ИЗ ...
СГРУППИРОВАТЬ ПО СЕРИЯ
ОБЪЕДЕНИТЬ ВСЕ
ВЫБРАТЬ СЕРИЯ, 0, 0, СУММА()
ИЗ ...
СГРУППИРОВАТЬ ПО СЕРИЯ
КАК
)
СГРУППИРОВАТЬ ПО СЕРИЯ


Гаранитирую прирост 300%
201 ДенисЧ
 
20.08.11
19:50
(200) ты тоже не читал всю тему целиком?
202 ILM
 
гуру
20.08.11
19:54
(201) По диагонали прокрутил, если на что-то не обратил внимание, то ткни пальцем в нужное сообщение.
Счас посомотрел повнимательнее... То что по ADO из оракла тянешь? Так и тяни сразу суммы... Или что-то другое?
203 ДенисЧ
 
20.08.11
19:57
(2020 из оракла тянутся номера серий. Всё остальное - из 1с. И самые тормоза там, где описано выше.

Мне надавали советов, в понедельник испытаю
204 ILM
 
гуру
20.08.11
20:15
Good Luck))
205 Ёпрст
 
22.08.11
08:23
(200) group by одна из самых тормозных операций, если че..
206 artbear
 
22.08.11
10:47
(0) Автор, есть результаты?
(205) +1
207 artbear
 
23.08.11
16:20
(0) Автор, ау!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.