Имя: Пароль:
1C
1С v8
Что быстрее соединение в запросе или отбор строк во 2й таблице в цикле по 1й
,
0 korolar
 
25.04.12
16:55
Собственно, если в 2-х таблицах более 10000 строк и соединение по 1 измерению (Договор) делается >10 минут. Возможно проще в цикле перебрать левую таблицу и находить в правой нужные строки отбором?
1 Humandra
 
25.04.12
17:05
Возможно, стоит таки задуматься, почему это соединение 10 минут делается. Ибо это вообще-то ненормально.
Например, потому что нет индекса на поле Договор. Или вы плодите декартово произведение.
2 korolar
 
25.04.12
17:13
нет-нет, строки по договору сгруппированы, индексы стоят.
3 aleks-id
 
25.04.12
17:15
у меня соединение 3.5млн с 34млн делается за доли секунды. что то у вас не так...
4 Buster007
 
25.04.12
17:16
(0) запрос показывай.
У меня что-то > 10 минут запрос никогда не выполнялся
5 korolar
 
25.04.12
17:20
(4) похоже дело уже не в соединении, сейчас просто 2я таблица выводится 10 мин. Либо в ней отбор виртуальной таблицы не надо задавать по всем договорам из первой, либо надо убрать периодичность по регистратору.
6 korolar
 
25.04.12
17:21
ВЫБРАТЬ
   ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
   ХозрасчетныйОстатки.Субконто2 КАК ДоговорКонтрагента,
   СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК Остаток
ПОМЕСТИТЬ ОстаткиЗадолженности
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет = &СчетУчетаРасчетов, , Организация = &Организация) КАК ХозрасчетныйОстатки

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстатки.Субконто2,
   ХозрасчетныйОстатки.Субконто1

ИНДЕКСИРОВАТЬ ПО
   ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   НДСНачисленныйОбороты.СтавкаНДС,
   НДСНачисленныйОбороты.СчетФактура.ДоговорКонтрагента КАК СчетФактураДоговорКонтрагента,
   СУММА(НДСНачисленныйОбороты.НДСПриход) КАК НДСПриход
ИЗ
   РегистрНакопления.НДСНачисленный.Обороты(
           &Дата0,
           &Дата,
           Регистратор,
           Организация = &Организация
               И СчетФактура.ДоговорКонтрагента В
                   (ВЫБРАТЬ
                       ОстаткиЗадолженности.ДоговорКонтрагента
                   ИЗ
                       ОстаткиЗадолженности КАК ОстаткиЗадолженности)) КАК НДСНачисленныйОбороты

СГРУППИРОВАТЬ ПО
   НДСНачисленныйОбороты.СтавкаНДС,
   НДСНачисленныйОбороты.СчетФактура.ДоговорКонтрагента
7 Maxus43
 
25.04.12
17:28
выразить юзай на Субконто в ВТ
8 Maxus43
 
25.04.12
17:30
и соединения не вижу.

И СчетФактура.ДоговорКонтрагента В
                   (ВЫБРАТЬ
                       ОстаткиЗадолженности.ДоговорКонтрагента
                   ИЗ
                       ОстаткиЗадолженности КАК ОстаткиЗадолженности))
нафиг так делать? к ВТ левым соединением цепляй НДСНачисленный
9 Maxus43
 
25.04.12
17:33
НДСНачисленныйОбороты.СчетФактура.ДоговорКонтрагента - а это зачем?
НДСНачисленныйОбороты.ДоговорКонтрагента просто
10 Maxus43
 
25.04.12
17:35
короче все тормоза от жутко составных типов в полях, приводить к нужным надо если есть возможность
11 Лоботряс
 
25.04.12
17:37
Детализация до регистратора в Оборотах зачем?
12 Лоботряс
 
25.04.12
17:39
(11)+ Периодичность в смысле..
13 Лоботряс
 
25.04.12
17:46
(10)Скорее тормоза от того что получаются обороты с детализацией до регистратора, а потом это все еще и группируется. Баян такой, сначала развернуть, а потом свернуть:)
14 korolar
 
25.04.12
17:46
(9) начисляет без договора, в регистре он пуст.
15 korolar
 
25.04.12
17:47
в итоге: регистратор убрал - не помогло, но (8) помогло!
Спасибо!!
менее минуты
16 korolar
 
25.04.12
17:49
вот так быстро:

ВЫБРАТЬ
   ХозрасчетныйОстатки.Субконто1 КАК Субконто1,
   ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.ДоговорыКонтрагентов) КАК ДоговорКонтрагента,
   СУММА(ХозрасчетныйОстатки.СуммаОстатокДт) КАК Остаток
ПОМЕСТИТЬ ОстаткиЗадолженности
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, Счет = &СчетУчетаРасчетов, , Организация = &Организация) КАК ХозрасчетныйОстатки

СГРУППИРОВАТЬ ПО
   ХозрасчетныйОстатки.Субконто1,
   ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто2 КАК Справочник.ДоговорыКонтрагентов)

ИНДЕКСИРОВАТЬ ПО
   ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   НДСНачисленныйОбороты.СтавкаНДС,
   НДСНачисленныйОбороты.СчетФактура.ДоговорКонтрагента КАК СчетФактураДоговорКонтрагента,
   СУММА(НДСНачисленныйОбороты.НДСПриход) КАК НДСПриход
ПОМЕСТИТЬ СтавкиНДС
ИЗ
   РегистрНакопления.НДСНачисленный.Обороты(&Дата0, &Дата, , Организация = &Организация) КАК НДСНачисленныйОбороты

СГРУППИРОВАТЬ ПО
   НДСНачисленныйОбороты.СтавкаНДС,
   НДСНачисленныйОбороты.СчетФактура.ДоговорКонтрагента

ИНДЕКСИРОВАТЬ ПО
   СчетФактураДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СтавкиНДС.СчетФактураДоговорКонтрагента КАК СчетФактураДоговорКонтрагента,
   МАКСИМУМ(СтавкиНДС.НДСПриход) КАК НДСПриход
ПОМЕСТИТЬ МаксНДСпоДоговору
ИЗ
   СтавкиНДС КАК СтавкиНДС

СГРУППИРОВАТЬ ПО
   СтавкиНДС.СчетФактураДоговорКонтрагента

ИНДЕКСИРОВАТЬ ПО
   СчетФактураДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СтавкиНДС.СтавкаНДС,
   СтавкиНДС.СчетФактураДоговорКонтрагента КАК СчетФактураДоговорКонтрагента,
   СтавкиНДС.НДСПриход
ПОМЕСТИТЬ МаксСтавкаНДСпоДоговору
ИЗ
   СтавкиНДС КАК СтавкиНДС
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксНДСпоДоговору КАК МаксНДСпоДоговору
       ПО СтавкиНДС.СчетФактураДоговорКонтрагента = МаксНДСпоДоговору.СчетФактураДоговорКонтрагента
           И СтавкиНДС.НДСПриход = МаксНДСпоДоговору.НДСПриход

ИНДЕКСИРОВАТЬ ПО
   СчетФактураДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОстаткиЗадолженности.Субконто1,
   ОстаткиЗадолженности.ДоговорКонтрагента,
   ОстаткиЗадолженности.Остаток,
   МаксСтавкаНДСпоДоговору.СтавкаНДС,
   МаксСтавкаНДСпоДоговору.НДСПриход
ИЗ
   ОстаткиЗадолженности КАК ОстаткиЗадолженности
       ЛЕВОЕ СОЕДИНЕНИЕ МаксСтавкаНДСпоДоговору КАК МаксСтавкаНДСпоДоговору
       ПО ОстаткиЗадолженности.ДоговорКонтрагента = МаксСтавкаНДСпоДоговору.СчетФактураДоговорКонтрагента
17 Mnemonic1C
 
25.04.12
17:52
Короче разбей запрос на несколько частей и проанализируй где тормоза. Здесь уже все написали.
18 korolar
 
25.04.12
17:55
(17) все, уже сделал, помогло, (16) - это уже быстрый запрос!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн