← все вопросывопросы для собеседований · Оптимизация запросов 1С

Вопросы по оптимизации запросов 1С на собеседовании

Мидла и сеньора 1С отличают по тому, понимает ли он, что происходит с запросом в базе. Главный вопрос блока звучит просто: условие на склад поставить в параметр виртуальной таблицы или в ГДЕ. За ним идут срез последних с условием на реквизит, где результаты расходятся, и разговор о плане запроса.

72 вопросов в банке·6 подтем·ниже разбор 9

Что спрашивают

Из чего состоит тема

Так тема разложена в тренажёре: движок ведёт прогресс по каждой подтеме отдельно и возвращает те, что просели.

Разборы подтем

Конспект по каждой: что это, как отвечать вслух, на чём валятся, плюс вопросы для самопроверки.

Примеры вопросов с разбором

  1. #oc_q_antipatterns1 / 9
    Какой антипаттерн чаще всего называют главной причиной тормозов в коде 1С?
    A)Использование временных таблиц вместо вложенных запросов
    B)Запрос в цикле
    C)Сортировка результата запроса по ссылке
    D)Использование параметров вместо констант в тексте
    показать ответ и разбор
    +B)Запрос в цикле

    // разбор: Запрос внутри цикла по строкам выполняет сотни и тысячи обращений к СУБД, каждое со своим разбором и планом. Почти всегда задачу решает один запрос с временной таблицей или соединением. Временные таблицы и параметры — как раз рекомендованные приёмы.

  2. #oc_q_indexes2 / 9
    Что даёт свойство реквизита «Индексировать»?
    A)Реквизит становится уникальным
    B)Реквизит кэшируется в памяти сервера
    C)Реквизит доступен для полнотекстового поиска
    D)Платформа создаёт индекс СУБД по реквизиту
    показать ответ и разбор
    +D)Платформа создаёт индекс СУБД по реквизиту

    // разбор: Индекс ускоряет отбор и сортировку по реквизиту, например поиск по артикулу или ИНН. Платформа добавляет в индекс и ссылку, чтобы он был уникальным. Уникальность значений индекс не обеспечивает, а полнотекстовый поиск настраивается отдельно.

  3. #oc_q_to_sql3 / 9
    Где выполняется запрос 1С в клиент-серверной базе?
    A)Переводится в SQL для СУБД
    B)В памяти сервера 1С целиком
    C)В отдельном сервисе запросов 1С
    D)На клиенте, после загрузки таблиц в память
    показать ответ и разбор
    +A)Переводится в SQL для СУБД

    // разбор: Сервер 1С транслирует запрос на языке запросов в один или несколько SQL-запросов для MS SQL или PostgreSQL. СУБД выполняет их и возвращает данные. Поэтому производительность упирается в план СУБД, индексы и статистику, а не только в текст запроса 1С.

  4. #oc_vt_balances4 / 9
    Какие поля даёт таблица Обороты регистра остатков для ресурса Количество?
    A)КоличествоНачальныйОстаток и КоличествоКонечныйОстаток
    B)Только КоличествоОборот
    C)КоличествоОстаток
    D)КоличествоПриход, КоличествоРасход, КоличествоОборот
    показать ответ и разбор
    +D)КоличествоПриход, КоличествоРасход, КоличествоОборот

    // разбор: У регистра остатков таблица Обороты раскладывает движения на приход, расход и оборот (приход минус расход) за период. У оборотного регистра есть только Оборот, так как видов движения нет. Начальный и конечный остатки даёт ОстаткиИОбороты.

  5. #oc_vt_params5 / 9
    Чем отбор Остатки(, Товар = &Товар) отличается от Остатки() ... ГДЕ Товар = &Товар для регистра накопления?
    A)Результат тот же, но расчёт уже
    B)Результат разный: ГДЕ отбирает ещё до расчёта остатков
    C)Параметр работает только у регистров сведений
    D)В ГДЕ быстрее
    показать ответ и разбор
    +A)Результат тот же, но расчёт уже

    // разбор: По ИТС оба запроса вернут одно и то же, но с отбором в ГДЕ система сначала посчитает остатки по всем товарам и только потом отбросит лишние. Условие в параметре виртуальной таблицы уходит внутрь её расчёта, и остаток считается только по нужному товару. Поэтому условия на измерения передают в параметры.

  6. #oc_vt_slices6 / 9
    Что вернёт СрезПервых(&Дата) периодического регистра сведений?
    A)Записи только за день &Дата
    B)Самую первую запись регистра целиком
    C)Ближайшую запись с даты по ключу
    D)Записи до &Дата, как срез последних
    показать ответ и разбор
    +C)Ближайшую запись с даты по ключу

    // разбор: Срез первых — зеркало среза последних: для каждого сочетания измерений берётся запись с наименьшим периодом, не меньшим даты. Применяют для «следующего значения»: ближайшая плановая цена, следующий график. Без даты — самая ранняя запись по каждому ключу.

  7. #oc_q_antipatterns7 / 9
    Чем плох ВЫБРАТЬ * в запросе к документу?
    A)Читаются все поля, включая ненужные
    B)Звёздочка отключает использование индексов по дате
    C)Звёздочка обходит ограничения доступа к полям
    D)Звёздочка запрещена синтаксисом языка запросов
    показать ответ и разбор
    +A)Читаются все поля, включая ненужные

    // разбор: Звёздочка выбирает все поля таблицы, и СУБД читает и передаёт лишние данные, включая длинные строки и хранилища значений. Код потом всё равно использует два-три поля. Стандарты требуют явно перечислять нужные поля. Синтаксически звёздочка допустима.

  8. #oc_q_indexes8 / 9
    Какую цену платят за лишний индекс на реквизите?
    A)Запросы к другим полям становятся медленнее
    B)Реквизит нельзя изменить
    C)Каждая запись объекта обновляет и индекс
    D)Справочник перестаёт поддерживать иерархию
    показать ответ и разбор
    +C)Каждая запись объекта обновляет и индекс

    // разбор: Индекс ускоряет чтение, но любая запись объекта обновляет и его. На часто записываемых таблицах лишние индексы заметно замедляют запись и раздувают базу. Индексируют то, по чему реально отбирают и сортируют.

  9. #oc_q_to_sql9 / 9
    Как называется таблица справочника в базе MS SQL?
    A)Справочник_Товары
    B)Catalog_Товары
    C)dbo.Товары
    D)_Reference с числовым суффиксом
    показать ответ и разбор
    +D)`_Reference` с числовым суффиксом

    // разбор: Платформа хранит объекты в таблицах со служебными именами: справочники — _Reference123, документы — _Document45, движения регистров накопления — _AccumRg67, их итоги — _AccumRgT68. Поля — _Fld89. Соответствие имён возвращает ПолучитьСтруктуруХраненияБазыДанных().

это 9 из 72

Ещё 63 вопросов по теме — в тренажёре, с движком повторения

Прочитать разбор и ответить самому — разные навыки. В Сеньорчике вопросы приходят сессиями, а подтему, на которой ты споткнулся, движок принесёт снова: завтра, через три дня, через неделю. Бесплатно: сессия дня каждый день.

Частые вопросы