Типовые ошибки в условиях 1С запросов

  Рет қаралды 20,361

Желтый клуб — 1С программирование

Желтый клуб — 1С программирование

Күн бұрын

Хочешь научиться программировать на 1С? Желтый клуб рекомендует курс по 1С от Нетологии: bit.ly/3DZAmTT
А по промокоду yellowclub получишь 10% скидку.
В гостях у Желтого клуба Артём Кузнецов - тимлид в крупнейшей МФО в России.
Артёму есть чем поделиться. Он работает с 1С базой объемом более 7 ТБ.
Это часть большого митапа с Атрёмом. Полную версию митапа по оптимизации 1С запросов смотрите тут: • Оптимизация запросов в...
ДОП. МАТЕРИАЛЫ от Артёма Кузнецова
Презентация и консоль запросов: vk.cc/c8Rxoq
Стандарты оптимизации запросов от фирмы 1С: vk.cc/c9n6sz
НАВИГАЦИЯ
00:00 - Стандарт "Эффективные условия запросов" от фирмы 1С
00:19 - ВЫБРАТЬ в запросах 1С
01:20 - Отрицание в условиях 1С запросов
02:17 - Не используй НЕ ЕСТЬ NULL
04:08 - Почему ИЛИ / В() - это плохо
06:41 - Нельзя использовать ТИПЗНАЧЕНИЯ() в 1С запросах
07:21 - Соединения
08:29 - Пример оптимизации условий в 1С запросе
#желтыйклуб #1с #запросы
==========
Информационные площадки "Жёлтого клуба":
Телеграмм канал: t.me/yellowclub_official
Телеграм чат: t.me/yellowclub_vrn
Группа ВКонтакте: vk: 1c_36
Подписывайся на канала Желтого клуба, чтобы не пропустить интересных гостей
/ @yellow_club

Пікірлер: 30
@arshanskiysergey2791
@arshanskiysergey2791 2 жыл бұрын
Большое спасибо что собрали самое важное в такое короткое видео)
@yellow_club
@yellow_club 2 жыл бұрын
Да, спасибо Артёму за крутой материал
@user-fs3gq5uc9f
@user-fs3gq5uc9f 2 жыл бұрын
Полезное видео, спасибо. Интересно было бы посмотреть на все стандарты разработки, которые применяются Автором.
@user-cf5zs8lm5s
@user-cf5zs8lm5s Жыл бұрын
в общем, sql в 1С и так бедный, вы ещё и отменили половину sql😅
@olegshpilevoy
@olegshpilevoy 2 жыл бұрын
Это не типовые ошибки в запросах. Запрос оптимален для решения задачи клиента. Оптимизация это уже второй этап за который нужно отдельно платить. И который может никогда и не наступить.
@yellow_club
@yellow_club 2 жыл бұрын
Можно и так. Такой подход похож на внедрение. Сделаем как умеем, а дальше видно будет. Когда сидишь на сопровождении, то будешь больше думать об оптимизации
@olegshpilevoy
@olegshpilevoy 2 жыл бұрын
@@yellow_club Вот и готовая тема для ролика. Пригласить фрилансера или разраба из франча которые работают с разными клиентами и задачами в режиме "многозадачности".
@yellow_club
@yellow_club 2 жыл бұрын
Хорошая тема, спасибо. Попробую организовать
@user-xh5hd3my4t
@user-xh5hd3my4t 2 жыл бұрын
Спасибо. Появился вопрос на разделе "Ставить НЕ в условии не надо", но в конце видео ответили на него
@yellow_club
@yellow_club 2 жыл бұрын
Да, меня это тоже смущало)
@Unfound3d
@Unfound3d 2 жыл бұрын
Я что-то не заметил. Ткните пальцем, где это аргументированно
@timurdanilenko3582
@timurdanilenko3582 2 жыл бұрын
А вЫ не думали, что чрезмерное использование временных таблиц и их индексация приведет (в большинстве случаев) к гораздо большим просадкам производительности исполнения запросов? ВТ нужно создать, потом еще индекс(ы) построить. Это весьма не маленькие операции. И приоритет должен быть на стороне читаемости, а не максимальной производительности (без фанатизма), пока код пишут люди.
@PupaVaskin
@PupaVaskin 2 жыл бұрын
Первый запрос не решает поставленную задачу по критерию времени, потому читаемостью приходится жертвовать. Ну и цифры по времени приведены, было 10 сек, стало 0.5, видимо не так велики накладные расходы на ВТ.
@timurdanilenko3582
@timurdanilenko3582 2 жыл бұрын
6:41 Не верно, ТипЗначения() = Тип() и Ссылка в скуле получается полностью идентичный код. Вот собственно условие: T1.RecorderTRef = 0x0000019E (в обоих случаях), Запросы полностью идентичны (скулевые). Я не сомневаюсь что Вы хороший программист и умеете писать запросы оптимальные, но Вы хоть проверяйте информацию!!!
@andreykot7577
@andreykot7577 2 жыл бұрын
Это из той же серии что и Не Есть Null и Есть Не Null. Зачем тратить ресурсы когда можно сразу написать код преобразования. Вместо вызова двух функций быстрее вызвать одну.
@timurdanilenko3582
@timurdanilenko3582 2 жыл бұрын
В целом я не против использовать небольшие ВТ вместо В, НЕ и пр. НО, как быть с СКД, где юзер ставит произвольные фильтры. Писать движок (функцию), который в скомпонованный макет поменяет текст запроса (не помню, текст(ы) запросов в скомпонованном макете доступны на запись)?
@maximgunchenko3754
@maximgunchenko3754 2 жыл бұрын
В модуле объекта в событии при формировании результата можно подменить текст запроса
@ktotoanonimnyj7500
@ktotoanonimnyj7500 8 ай бұрын
На файловой базе выборка из 30к позиций по условию к перечислению через где и виртуальной таблице составило 3 сек. В пользу виртуальной таблицы. а вот по 2 значениям перечисления через где на 2 секунды быстрее отработало.
@Mrnuctoh
@Mrnuctoh 7 ай бұрын
Артем по ходу дела не пробовал профайлер запустить и глазками своими собственными посмотреть план. Трахать SQL-сервер менеджментом временных таблиц только чтобы уйти от В() - это настолько кринжово, что... Ну я даже не знаю что сказать... Куда выложить скрины запросов и профайлера? Вот прям взял и накидал два совершенно идентичных представленным запроса по своей довольно большой таблице документов. Второй вариант с внутренними соединениями очевидно же порождает несколько нестед лупсов в отличие от ни одного (максимум одного, если индексы совсем плохие) в первом запросе. Единственная неоптимальность в первом запросе - это использование НАЧАЛОПЕРИОДА/КОНЕЦПЕРИОДА, потому что это не позволяет использовать индексацию документа по дате. На сём и надо было остановиться, а не городить огород. Насчет цифр - первый запрос с исправленным МЕЖДУ у меня CPU:15, Reads:5096, Dura:24. Второй - CPU:47, Reads:40802, Dura:45.
@ilya2184
@ilya2184 2 жыл бұрын
НЕ (шаг = значение()) это отрицание булевого значения?
@ilya2184
@ilya2184 2 жыл бұрын
Типзначения() разве не использует индексированную физическую колонку с типом?
@Skarbovoy
@Skarbovoy 2 жыл бұрын
Типзначения = тип и ссылка генерят одинаковый SQL код, но ссылка не работает на несовместимых типов.
@DimaVort
@DimaVort Жыл бұрын
Странно. Я читал, что оператор В как раз норм по производительности, потому что вьіполняется как запрос с обьединением. Бьіла рекомендация ИЛИ заменять на В. Может в исходном запросе достаточно бьіло последнее заменить на В из предвіьборки?
@user-ts5sv8vp3x
@user-ts5sv8vp3x Жыл бұрын
Индексирование булево полей мне кажется это гениально сказано (нет).
@jinkisaragi9931
@jinkisaragi9931 Жыл бұрын
А чем плохо применение отрицания для булевых значений? Никаких неявных соединений там не будет
@user-th4mz8pl9h
@user-th4mz8pl9h Жыл бұрын
Очень много фантазий у ментора. Например передает запросы в планировщик(С точки зрения СУБД, 1С передает не запрос, а инструкцию. Инструкция подает в ОПТИМИЗАТОР. ОПТИМИЗАТОР в свою очереднь делает несколько планов запросов и подбирает оптимальный). По поводу быстродействия запросов , автор упоминул статистику(надо добавить еще КЭШЬ субд), так вот если вы не обновляете статисктику и КЭШЬ (либо не реструктаризируете таблицы БД), то конечно же, стандартизированные запросы будут выполняться быстрее. По поводу индексации ВТ это мрак(ВТ хранятся в оперативной памяти) и если вы их индексируете то из оперативки Вт попадает на хард, есть только один случай индексации ВТ, а именно когда ВТ > 8 мбайт(Потому что если ВТ > 8 мбайт то она всегда помещается из оперативки в хард). Буду сильно удивлен если у ментора есть серт Эксперта.
@netan7633
@netan7633 6 ай бұрын
Если документов много миллиардов и нужно их анализировать, разве не лучше делать регистры, записывать туда предрасчетную информацию(даже хотябы регламентным заданием), индексируй. А потом запросы по уже подготовленным данным...
@user-md6zu5sr9b
@user-md6zu5sr9b Жыл бұрын
99% никакой оптимизации не делают. И в 99% она и нафиг не нужна
@bomgfuf2515
@bomgfuf2515 2 жыл бұрын
главная ошибка, это использование 1с как языка. каждый пишет шо хочет и в итоге получилась солянка.
@yellow_club
@yellow_club 2 жыл бұрын
А в других языках разве не так же? Везде каждый пишет шо хочет
1 класс vs 11 класс  (игрушка)
00:30
БЕРТ
Рет қаралды 3,1 МЛН
Как живётся программисту 1С в DNS?
9:35
DNS | Информационная служба
Рет қаралды 37 М.
Правила оптимизации виртуальных таблиц в 7 ТБ 1С базе
9:53
Желтый клуб — 1С программирование
Рет қаралды 4,7 М.
Оптимизация запросов в 7 ТБ базе 1С
2:08:04
Желтый клуб — 1С программирование
Рет қаралды 55 М.
Инструменты программиста 1С
15:23
IRONSKILLS - Курсы по 1С
Рет қаралды 27 М.
ИНДЕКСЫ В БАЗАХ ДАННЫХ. СОБЕС В OZON.
33:59
Ваня Ио про разработку
Рет қаралды 40 М.
Ошибки в коде 90% программистов
2:11:36
Желтый клуб — 1С программирование
Рет қаралды 36 М.
Разбор загрузки из Excel для мидлов и сеньоров
23:16
Желтый клуб — 1С программирование
Рет қаралды 16 М.