Имя: Пароль:
1C
1С v8
помогите ускорить запрос...
0 vde69
 
модератор
24.01.14
16:24
вечер могз плавится... текущий запрос выполняется 15 сек...
помогите оптимизировать... конфа Бух 3.0, ничего менять в методанных нельзя

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК Справочник.Контрагенты) КАК Объект,
    ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника.ИНН КАК СТРОКА(20)) КАК ОбъектИНН,
    ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника.КПП КАК СТРОКА(20)) КАК ОбъектКПП,
    ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника.Наименование КАК СТРОКА(200)) КАК ОбъектНаименование
ПОМЕСТИТЬ СуществующиеСопоставления
ИЗ
    РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
ГДЕ
    СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника = &УникальныйИдентификаторПриемника

ИНДЕКСИРОВАТЬ ПО
    Объект,
    ОбъектИНН,
    ОбъектКПП,
    ОбъектНаименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СуществующиеСопоставления.Объект,
    1 КАК Приоритет
ИЗ
    СуществующиеСопоставления КАК СуществующиеСопоставления

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Контрагенты.Ссылка,
    2
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ СуществующиеСопоставления КАК СуществующиеСопоставления
        ПО Контрагенты.ИНН = СуществующиеСопоставления.ОбъектИНН
            И Контрагенты.КПП = СуществующиеСопоставления.ОбъектКПП
            И (Контрагенты.ИНН = &ИНН)
            И (Контрагенты.КПП = &КПП)
ГДЕ
    Контрагенты.ИНН = &ИНН
    И Контрагенты.КПП = &КПП
    И СуществующиеСопоставления.Объект.Ссылка ЕСТЬ NULL
1 Волшебник
 
модератор
24.01.14
16:26
>>> ничего менять в методанных нельзя

Можно. Индексы добавь
2 H A D G E H O G s
 
24.01.14
16:28
ВЫРАЗИТЬ(ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК Справочник.Контрагенты).ИНН КАК СТРОКА(20)) КАК ИНН,


И.т.д.
3 H A D G E H O G s
 
24.01.14
16:29
И СуществующиеСопоставления.Объект=Значение(Справочник.Контрагенты.ПустаяСсылка)
4 H A D G E H O G s
 
24.01.14
16:29
ппц, не узнаю vde
5 H A D G E H O G s
 
24.01.14
16:30
ЛЕВОЕ СОЕДИНЕНИЕ СуществующиеСопоставления КАК СуществующиеСопоставления
        ПО Контрагенты.ИНН = СуществующиеСопоставления.ОбъектИНН
            И Контрагенты.КПП = СуществующиеСопоставления.ОбъектКПП
            И (Контрагенты.ИНН = &ИНН)
            И (Контрагенты.КПП = &КПП)
ГДЕ
    Контрагенты.ИНН = &ИНН
    И Контрагенты.КПП = &КПП


трешъ, угар и содомиЯ

Объясни смысл, плиз.
6 le_
 
24.01.14
16:32
И СуществующиеСопоставления.Объект.Ссылка ЕСТЬ NULL
Скорее всего из-за этого тормозит. Оно там клепает подзапросы ко всем объектам, типы которых перечислены в этом реквизите.
7 H A D G E H O G s
 
24.01.14
16:32
ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника.ИНН

100500 вероятности тупости здесь, ибо там - ЛюбаяСсылка
8 H A D G E H O G s
 
24.01.14
16:32
(6) Там УЖЕ всего 1 тип - Контрагенты.
9 le_
 
24.01.14
16:35
(8) Да, пардон
10 H A D G E H O G s
 
24.01.14
16:36
(9) Но это не мешает оптимизировать и его, см. (3)

Но меня мучает конструкция вида (5).

Что хотел сказать художник?
11 H A D G E H O G s
 
24.01.14
16:37
Даже скорее мы (5) изменим на

СуществующиеСопоставления.Объект ЕСТЬ NULL
12 Лефмихалыч
 
24.01.14
16:38
+100500 к ВЫРАЗИТЬ
А в таблице СуществующиеСопоставления что ли много данных? На кой ее индексировать? Или это от отчаяния уже?
13 H A D G E H O G s
 
24.01.14
16:39
(12) Это мы узнаем, когда откроеться тайна кода (5)
14 vde69
 
модератор
24.01.14
16:40
(2) все понял, спс.

(4) да у меня ж..а с НГ на самописку перешли, брали под это дело второго прога с 1 октября, а он пропал, один и писал и под телефоном лежу :)
15 H A D G E H O G s
 
24.01.14
16:41
"а он пропал"

Жесть. Хорошо, что я в ваш банк не прошел на собеседовании. У вас проги пропадают.
16 vde69
 
модератор
24.01.14
17:17
(15) ну во первых я уже 2 года не в банке, во вторых он сам пропал, там история мутная с ментами и т.д.
17 GANR
 
24.01.14
17:25
(0) Вот некоторые рекомендации
1. Отфильтровать
ГДЕ СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника ССЫЛКА Справочник.Контрагенты
И ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК Справочник.Контрагенты) = &Контрагент
2. Индексы в метаданных добавить, если можно
3. Профайлер глянуть и план запроса - может чего-то прояснится.
18 GANR
 
24.01.14
17:28
(0) См. (17) - я уверен, что дело в том, что УникальныйИдентификаторИсточника - составное поле из большого количества типов, а на СКЛ-уровне это транслируется в запрос с огромным количеством ОБЪЕДИНИТЬ ВСЕ, затем это оборачивается во вложенный запрос, а во вложенном запросе индексы (если есть) идут лесом.
19 acsent
 
24.01.14
17:30
Временная таблица здесь вообще не нужна
20 vde69
 
модератор
24.01.14
17:33
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВЫРАЗИТЬ(СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника КАК Справочник.Контрагенты) КАК Объект
ПОМЕСТИТЬ СуществующиеСопоставления
ИЗ
    РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
ГДЕ
    СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника = &УникальныйИдентификаторПриемника

ИНДЕКСИРОВАТЬ ПО
    Объект
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СуществующиеСопоставления.Объект,
    1 КАК Приоритет
ИЗ
    СуществующиеСопоставления КАК СуществующиеСопоставления

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Контрагенты.Ссылка,
    2
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ СуществующиеСопоставления КАК СуществующиеСопоставления
        ПО (Контрагенты.ИНН = &ИНН)
            И (Контрагенты.КПП = &КПП)
            И Контрагенты.Ссылка = СуществующиеСопоставления.Объект
ГДЕ
    Контрагенты.ИНН = &ИНН
    И Контрагенты.КПП = &КПП
    И СуществующиеСопоставления.Объект.Ссылка ЕСТЬ NULL



выполняется 0,01 сек
21 Rovan
 
гуру
24.01.14
17:33
(0) посмотри в консоли запросов - какой подзапрос выполняется дольше ?
22 Rovan
 
гуру
24.01.14
17:34
а вообще поле ИНН какого типа ? разве не строка ??
23 vde69
 
модератор
24.01.14
17:35
(21) да я тупо лоханулся, имя через точку к реквизиту неопределеного типа.

отдыхать надо, а не дают...