|
Что быстрее соединение в запросе или отбор строк во 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) - это уже быстрый запрос!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |