Вход | Регистрация



Дали запрос, который необходимо оценить.

Дали запрос, который необходимо оценить.
Я
   wowik
 
24.10.18 - 21:33
Подскажите, все ли здесь правильно?

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад КАК Склад,
    ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстатки.КоличествоОстаток КАК СкладОстаток,
    ТоварыОрганизацийОстатки.КоличествоОстаток КАК ОрганизацияОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТоварыОрганизацийОстатки
        ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыОрганизацийОстатки.Номенклатура.Ссылка
ГДЕ
    ТоварыНаСкладахОстатки.Склад = &Склад
    И ТоварыОрганизацийОстатки.Организация = &Организация
    И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура
 
 
   Лефмихалыч
 
1 - 24.10.18 - 21:35
нет
   1CSharp
 
2 - 24.10.18 - 21:35
5 ошибок насчитал
   Лефмихалыч
 
3 - 24.10.18 - 21:37
(2) а две последние строчки - это у тебя две ошибки или одна?
   wowik
 
4 - 24.10.18 - 21:37
Сообщите пожалуйста об ошибках. Это крайне важно. Я нашел ошибки некоторые, необходимо сравнить.
   palsergeich
 
5 - 24.10.18 - 21:38
(4)
ГДЕ
    ТоварыНаСкладахОстатки.Склад = &Склад
    И ТоварыОрганизацийОстатки.Организация = &Организация
    И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура

это одна большая ошибка
   Лефмихалыч
 
6 - 24.10.18 - 21:38
(4) сначала ты свои выкладывай, а то так не интересно
   PR
 
7 - 24.10.18 - 21:38
(4) Да легко
После сообщите запятая нужна
   wowik
 
8 - 24.10.18 - 21:39
(6) - нет соединения по Складу, СерииНоменклатуры,Характеристике между "ТоварыНаСкладах" и "ТоварыОрганизаций"
- вместо ТоварыОрганизацийОстатки.Номенклатура.Ссылка нужно писать ТоварыОрганизацийОстатки.Номенклатура, это лишняя связь
- отбор необходимо делать в виртуальных таблицах
- отбор по складу в одном регистре есть, в другом нет, почему?
   palsergeich
 
9 - 24.10.18 - 21:40
(8) Потому что товары организаций там нет складов. А в товарах на склаждах нет организаций, это разные разделы учета
   Лефмихалыч
 
10 - 24.10.18 - 21:45
(8) слона-то ты и не приметил.
Соединение здесь само по себе - это один большой косяк. Виртуальные таблицы соединяют друг с другом только мудаки.
 
 Рекламное место пустует
   palsergeich
 
11 - 24.10.18 - 21:46
ТоварыНаСкладахОстатки.Номенклатура = ТоварыОрганизацийОстатки.Номенклатура.Ссылка Само по себе грубейшая ошибка, а если взять последнюю УТ, то в товарах организации нет измерения Номенклатура вообще, там ключиАналитикиНоменклатуры
   wowik
 
12 - 24.10.18 - 21:47
(10) +100!
   1CSharp
 
13 - 24.10.18 - 21:47
(3) Считал как две. Там с учетом отбора по номенклатуре можно ещё одну прибавить, но уже было лень писать)

(8) Соед...
   palsergeich
 
14 - 24.10.18 - 21:47
(10) Это оперативные остатки, там это допускается
   wowik
 
15 - 24.10.18 - 21:47
(9) это почему нет склада в товарах организаций? от настроек зависит.
   Лефмихалыч
 
16 - 24.10.18 - 21:47
и отборы все - в параметры надо. Это помимо того, что так в принципе не надо делать вообще изначально
   palsergeich
 
17 - 24.10.18 - 21:50
(15) Потому что нету https://ibb.co/dZ7iGV
   1CSharp
 
18 - 24.10.18 - 21:50
(10) А что не так с соединением виртуальных таблиц?
Как иначе получить остатки из двух виртуальных таблиц в строке?
   wowik
 
19 - 24.10.18 - 21:51
(17) Конфигурация УПП 1.3, забыл сказать.
   palsergeich
 
20 - 24.10.18 - 21:54
(18) При неоперативных остатках это подзапрос 2го уровня вложенности и оптимизатор СУБД очень сильно лажает. Это если в кратце.
При оперативных отстатках - просто поиск с отборами в таблице остатков - там соединение 2х вирт таблиц остатков не вызовет технологических проблем
   Лефмихалыч
 
21 - 24.10.18 - 21:55
(18) для этого - временные таблицы.
С самими виртуальными нет проблем, проблемы начинаются с из соединением друг с другом потому, что виртуальная таблица - это запрос.
   1CSharp
 
22 - 24.10.18 - 21:56
(20) Т.е. просто сначала в ВТ предлагаете поместить?
   palsergeich
 
23 - 24.10.18 - 21:58
(21) Не просто запрос, а получаются расчитанные остатки и от них суммируются движения, и при соединении оптимизатор очень часто и очень сильно лажает.
При ОПЕРАТИВНЫХ остатках (без указания периода остатков) - простейший запрос.
ВТ тоже не бесплатные.
Оперативные остатки - не имеет смысла.
Не оперативные остатки - имеет смысл
   vde69
 
24 - 24.10.18 - 22:00
для начала нужно заполнить максимум параметров в виртуальной таблице
   Лефмихалыч
 
25 - 24.10.18 - 22:01
(23) горшочек, не вари

(22) да
   palsergeich
 
26 - 24.10.18 - 22:03
(25) Ну ок, мне же лучше, я потом за исправление в том числе таких ошибок премии получаю.
   vde69
 
27 - 24.10.18 - 22:03
(22) не обязательно, все зависит от размера выборки виртуальных таблиц после того как сделаешь (24)

и надо учитывать, что создание ВТ и работа внутри нее имеет свои накладные расходы, по этому ВТ имеет  смысл далеко не всегда...
   wowik
 
28 - 24.10.18 - 22:08
Можете поставить оценку по пятибалльной шкале разработчику данного запроса?
   Лефмихалыч
 
29 - 24.10.18 - 22:08
(28) кол. Вазелинового дерева.
   palsergeich
 
30 - 24.10.18 - 22:09
(28) 2, все ошибки, кроме трений нужно ВТ или нет являются грубейшими
   palsergeich
 
31 - 24.10.18 - 22:10
И хоть никто не обратил на это внимание, но вот это ТоварыОрганизацийОстатки.Номенклатура.Ссылка Просто злейшее зло, особенно в соединении
   vde69
 
32 - 24.10.18 - 22:11
(28) данный запрос на базе где в регистрах будет хотя бы по 100тыс записей (а это очень не много) - тебе завесит сервак минут на 10... причем полность....

по этому автору - 2 с минусом
   palsergeich
 
33 - 24.10.18 - 22:13
(32) Не, может и проскочить, я встречал когда и 3 соединения ВТ, где параметры были в ГДЕ оптимизатор понимал и подбирал оптимальный план запроса, но это исключение, а не правило.
 
 
   Лефмихалыч
 
34 - 24.10.18 - 22:14
(31) полно-те вам, батенька, брюзжать - на это обратил внимание автор
   vde69
 
35 - 24.10.18 - 22:15
(31) это не всегда ошибка, это будет гемороем только если тип составной, остальное скуль заоптимизирует с большой долей вероятности.

вообще условие в джойне не должно вести к деградации составного индекса, ТоварыОрганизацийОстатки.Номенклатура.Ссылка - однозначно ведет к деградации, но тут вопрос на какой длине это будет, если это условие отсечет только хвост индекса, то все не так и плохо, а вот если приведет к полному фулскану - то плохо...
   palsergeich
 
36 - 24.10.18 - 22:15
(34) Лучи добра Вам)
   Лефмихалыч
 
37 - 24.10.18 - 22:15
(33) эо просто оптимизатор ошибся четное количество раз
   Лефмихалыч
 
38 - 24.10.18 - 22:17
мучительно нудная вечеринка в кнайпе "Старые пердуны" объявляется открытой...
   H A D G E H O G s
 
39 - 24.10.18 - 23:53
Даже в оперативных остатках будет подзапрос, чтобы сложить разделение итогов, другой вопрос, что оптимизатор его нормально прожевывает.
   palsergeich
 
40 - 25.10.18 - 00:10
(39) Да будет, но не двойной
   dmpl
 
41 - 25.10.18 - 07:22
(14) Соединение количественных данных вместо объединения - верный путь получить неверные цифры из-за задваивания-затраивания строк.
   dmpl
 
42 - 25.10.18 - 07:30
(32) Проверил на базе объемом 300 Гб. Отработал за секунду. Причем это на тестовом сервере, где оборудование уже не фонтан.
   Повелитель
 
43 - 25.10.18 - 07:43
(28) 2 балла разарбочику
   palsergeich
 
44 - 25.10.18 - 07:49
(42) 1) а смысл смотреть без нагрузки.
2) соединение по 1 номенклатуре из оперативных остатков 1 секунду - это просто ужасный результат.
   toypaul
 
45 - 25.10.18 - 08:20
Кто-то тут курсов по оптимизации похоже пересмотрел. Только смотрел похоже в режиме 5 минут через 10.


Первый вопрос к запросу - а что хотели получить. А уж потом про ошибки.
   organizm
 
46 - 25.10.18 - 08:31
во первых, нужно использовать виртуальные таблицы с максимальным количеством отборов , во вторых, использовать объединение.
   dmpl
 
47 - 25.10.18 - 08:32
(44) Это компенсируется тем, что база не в ОЗУ, и лежит на "зеленом" HDD WD. Ну и обещали 10 минут минимум. При этом если бы оптимизатор лажанул, то запрос минимум 30 секунд бы работал на этой базе.
   0xFFFFFF
 
48 - 25.10.18 - 08:36
(2) я насчитал одну ошибку. Весь запрос - одна большая ошибка.
   zak555
 
49 - 25.10.18 - 08:39
(0) для начала надо узнать : какую задачу решал поставленный запрос

Например, если есть ордерная схема, то запрос все эти движения без подтверждений не учитываются
 
 Рекламное место пустует
   palsergeich
 
50 - 25.10.18 - 08:41
(49) 100% это тестовая задача - найдите ошибки в этом запросе и объясните почему это так
   zak555
 
51 - 25.10.18 - 08:45
(50) по мне главное это понимание как работают те или регистры

Остальное дело техники
   ADirks
 
52 - 25.10.18 - 08:48
(0) По моему, тут даже не в запросе что-то не так. Тут с архитектурой беда. Два регистра с остатками ТМЦ - это злейшее зло. Я то думал, после ТИСа они так больше не лепят, ан оказывается нет...
   Cool_Profi
 
53 - 25.10.18 - 08:49
(52) А у тебя были сомнения, что в 1с сидят качественные архитекторы?
   palsergeich
 
54 - 25.10.18 - 08:54
(51) то что при соединении все поплывет это ответ на должность повыше, обычно просят не вдаваться в детали, а рассказать что в тексте не нравится сходу.
(53) ну ДО то адекватный достаточно вышел.
   ADirks
 
55 - 25.10.18 - 08:54
(53) ну, местами то вполне ничо
но вот последнее время частенько в ЗиКе колупаюсь - вот где наркоманы то тусовались. да и в ЗУПе тоже.  традиции блин...
   SoulPower
 
56 - 25.10.18 - 09:06
вот всё написали же, чего не читаем)))

https://its.1c.ru/db/metod8dev#content:5842:hdoc:vtable_join
   zak555
 
57 - 25.10.18 - 09:15
(52) первый для хранения остатков по складам и резервам

Второй остатки для хранения склады/организации -- основание для расчета себеса
   wowik
 
58 - 25.10.18 - 09:26
(50) нет, это к сожалению не тест, это в жизни.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует