Запрос всей номенклатуры с характеристиками

30.07.21

Разработка - Математика и алгоритмы

Сравнение различных вариантов запроса всей номенклатуры с характеристиками (УТ11.4, КА 2.4, ERP 2.4).

Скачать исходный код

Наименование Файл Версия Размер
Оптимальный запрос номенклатуры с характеристиками :
.q9 127,96Kb
1
.q9 127,96Kb 1 Скачать

Доброго времени суток!

Исходя из специфики выполняемых задач, в последнее время часто приходилось получать из базы 1С всю номенклатуру с характеристиками, для последующей обработки.

В процессе разработки различных решений задался целью проверить скорость и качество выполнения запросов.

Учитывая опыт практического применения приведенных в статье решений считаю оптимальным указать голые замеры с комментариями и не буду касаться планов запросов и остальной теоретической части.

Помним, что наилучшее решение всегда индивидуально и зависит от многих факторов.

Условия:

- Каждый запрос выполняется 1000 раз подряд (в цикле) для определения лучшего, худшего, среднего и общего результата. При длительных запросах по понятным причинам обходился замерами в консоли.

- На каждый запрос  по 3 повтора (итого 3000 запросов) для разброса.

Предлагаю поэтапно составить запрос.

 
 1 этап - вытянуть всю номенклатуру без характеристик
Особенности 
Текст запроса
Время выполнения
Лучшее
Худшее
Среднее
Общее
1

одинарный

отбор

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

00.012,000
00.011,000
00.011,000
00.017,000
00.020,000
00.023,000
00.012,695
00.012,787
00.012,823
12.695,000
12.787,000
12.823,000
2

двойной отбор,

сперва по

использованию

характеристик

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)
    И НЕ Номенклатура.ЭтоГруппа

00.011,000
00.011,000
00.011,000
00.018,000
00.023,000
00.018,000
00.012,937
00.013,345
00.012,892
12.937,000
13.345,000
12.892,000
3

двойной отбор,

сперва по

принадлежности

к группе

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.ЭтоГруппа
    И Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

00.011,000
00.012,000
00.012,000
00.024,000
00.020,000
00.022,000
00.013,598
00.013,382
00.013,355
13.598,000
13.382,000
13.355,000

Исходя из таблицы полученных замеров можно сделать следующие выводы:

1 - Чем больше условий отбора в запросе, тем длительнее время выполнения запроса.

2 - Исходя из 2 (второй) строки таблицы можно сделать заключение о том, что при выполнении первого условия косвенно выполняется второе. По сути первое условие уже содержит второе (всегда будет "ИСТИНА", поскольку у группы не может быть признака использования характеристик). Как результат - увеличение времени выполнения запроса.

3 - Порядок условий влияет на результат.

 
 2 этап - вытянуть всю номенклатуру с индивидуальными характеристиками.
Особенности
Текст запроса
Время выполнения
Лучшее
Худшее
Среднее
Общее
1 подход - через владельца номенклатуры
1.1 С оператором "Выразить" ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура) КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
 00.002,000
 00.003,000
 00.003,000
 00.006,000
 00.006,000
 00.007,000
00.003,372
00.003,411
00.003,381
03.372,000
03.411,000
03.381,000
1.2 Без оператора "Выразить" ВЫБРАТЬ
    ХарактеристикиНоменклатуры.Владелец КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
 00.004,000
 00.004,000
 00.004,000
 00.008,000
 00.009,000
 00.014,000
00.004,924
00.004,948
00.004,989
04.924,000
04.948,000
04.989,000
1.3 Недостоверные данные ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура) КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
00.002,000
00.002,000
00.002,000
00.004,000
00.005,000
00.006,000
00.003,201
00.003,209
00.003,271
03.201,000
03.209,000
03.271,000
1.4 Недостоверные данные ВЫБРАТЬ
    ХарактеристикиНоменклатуры.Владелец КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
00.004,000
00.003,000
00.003,000
00.007,000
00.006,000
00.007,000
00.004,831
00.004,779
00.004,758
04.831,000
04.779,000
04.758,000
2 подход - через соединение таблиц (справочников)
2.1 - соединение
2.1.1

Внутреннее соединение "В лоб" по владельцу

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
00.008,000
00.008,000
00.008,000
00.014,000
00.011,000
00.017,000
00.009,521
00.009,465
00.009,521
09.521,000
09.465,000
09.521,000
2.1.2 Внутреннее соединение по виду номенклатуры и "В лоб" по владельцу

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.ВидНоменклатуры
                И Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)

00.011,000
00.011,000
00.011,000
00.021,000
00.021,000
00.023,000
00.012,141
00.012,001
00.012,003
12.141,000
12.001,000
12.003,000
2.2 - соединение с последующими отборами
2.2.1

Внутреннее соединение "В лоб" по владельцу, с отбором по признаку использования характеристик

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
00.015,000
00.014,000
00.015,000
00.026,000
00.034,000
00.066,000
00.016,326
00.016,455
00.016,504
16.326,000
16.455,000
16.504,000

2.2.2

Внутреннее соединение "В лоб" по владельцу, с последующим отбором по признаку использования характеристик и типу ссылки владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
    и ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
00.015,000
00.015,000
00.015,000
00.028,000
00.031,000
00.028,000
00.016,418
00.016,367
00.016,449
16.418,000
16.367,000
16.449,000
2.2.3 Внутреннее соединение с выражением  типа владельца, с последующим отбором по признаку использования характеристик ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура)))
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
00.015,000
00.015,000
00.015,000
00.035,000
00.024,000
00.025,000
00.017,070
00.016,777
00.016,786
17.070,000
16.777,000
16.786,000
2.2.4 Внутреннее соединение с выражением  типа владельца, с последующим отбором по признаку использования характеристик и типу ссылки владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура)))
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
    и ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
00.015,000
00.016,000
00.015,000
00.034,000
00.031,000
00.032,000
00.016,756
00.016,883
00.016,785
16.756,000
16.883,000
16.785,000
2.3 - соединение с условиями
2.3.1 Внутреннее соединение с условием  использования характеристик и "В лоб" по владельцу ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                И Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
00.014,000
00.014,000
00.014,000
00.030,000
00.036,000
00.034,000
00.015,857
00.015,930
00.015,821
15.857,000
15.930,000
15.821,000
2.3.2 Внутреннее соединение с условием  использования характеристик и выражением владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                И Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура)))
00.015,000
00.015,000
00.015,000
00.026,000
00.025,000
00.023,000
00.016,844
00.016,762
00.016,687
16.844,000
16.762,000
16.687,000
2.3.3 Внутреннее соединение с условием  использования характеристик, ограничением по типу ссылки и по владельцу ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
                И Номенклатура.Ссылка = ХарактеристикиНоменклатуры.Владелец)
00.015,000
00.014,000
00.014,000
00.026,000
00.039,000
00.037,000
00.015,925
00.016,455
00.016,027
15.925,000
16.455,000
16.027,000
2.3.4 Внутреннее соединение с условием  использования характеристик, ограничением по типу ссылки и выражением владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
                И Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура)))
00.015,000
00.015,000
00.015,000
00.026,000
00.019,000
00.022,000
00.016,851
00.016,745
00.016,782
16.851,000
16.745,000
16.782,000
Замеры, указанные в таблице, предполагают следующие выводы:

1 - Лучший вариант - напрямую обращаться к реквизиту элемента, не делая соединений.

2 - Судя по запросам 1.1 и 1.2 - оператор "Выразить" влияет на результат достаточно серьезно в связке с ограничением типа ссылки.

3 - Внутреннее соединение "В лоб" - быстрее, чем любой дополнительный отбор как во время, так и после соединения таблиц.

4 - Количество отборов "до" или "во время" влияет на результат и при соединении. Стоит придерживаться стратегии наименьшего количества достаточных условий.

5 - Лучше соединение с условиями, чем последующий отбор.

ВНИМАНИЕ!!! Существенным недостатком 1 подхода считаю недостоверность данных. Конкретно в базе, на которой тестировал, пользователь сперва создал номенклатуру с индивидуальными характеристиками и создал характеристики, а потом поменял у номенклатуры вид на "без характеристик". Получилась ситуация, когда характеристика имеет владельца, но номенклатура-владелец не имеет признака использования характеристик.

 
 3 этап - вытянуть номенклатуру с характеристиками общими по виду номенклатуры или общие с другим видом
Особенности
Текст запроса
Время выполнения
Лучшее
Худшее
Среднее
Общее
1 - соединение по владельцу
1.1 - соединение по владельцу без условий
1.1.1 Внутреннее соединение "В лоб" по владельцу

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)

00.002,000
00.002,000
00.002,000
00.004,000
00.005,000
00.011,000
00.003,007
00.003,048
00.003,051
03.007,000
03.048,000
03.051,000
1.1.2 Внутреннее соединение "В лоб" по владельцу с выражением  типа владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.ВидыНоменклатуры)))
00.003,000
00.004,000
00.004,000
00.005,000
00.012,000
00.009,000
00.004,679
00.004,712
00.004,707
04.679,000
04.712,000
04.707,000
1.2 - соединение по владельцу с последующим наложением условий
1.2.1 Внутреннее соединение "В лоб" по владельцу, с последующим отбором по признаку использования характеристик

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)

00.002,000
00.002,000
00.002,000
00.011,000
00.010,000
00.010,000
00.003,377
00.003,413
00.003,371
03.377,000
03.413,000
03.371,000
1.2.2 Внутреннее соединение "В лоб" по владельцу, с последующим отбором по признаку использования характеристик и типу ссылки владельца

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

00.002,000
00.003,000
00.002,000
00.010,000
00.010,000
00.009,000
00.003,436
00.003,430
00.003,454
03.436,000
03.430,000
03.454,000
1.2.3 Внутреннее соединение с выражением  типа владельца и последующим отбором по признаку использования характеристик и типу ссылки владельца

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

00.003,000
00.003,000
00.003,000
00.011,000
00.012,000
00.007,000
00.003,996
00.003,945
00.003,777
03.996,000
03.945,000
03.777,000
1.3 - соединение по владельцу с условиями
1.3.1 Внутреннее соединение с условием  использования характеристик и "В лоб" по владельцу ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры))
            И (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)
00.003,000
00.002,000
00.002,000
00.005,000
00.004,000
00.006,000
00.003,332
00.003,333
00.003,331
03.332,000
03.333,000
03.331,000
1.3.2 Внутреннее соединение с условием  использования характеристик и выражением владельца ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры))
            И (Номенклатура.ВидНоменклатуры = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.ВидыНоменклатуры)))
            И (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)
00.003,000
00.003,000
00.003,000
00.005,000
00.010,000
00.005,000
00.003,983
00.004,013
00.003,993
03.983,000
04.013,000
03.993,000
1.3.3 Внутреннее соединение с условием  использования характеристик, ограничением по типу ссылки и по владельцу ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
                И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.ВидыНоменклатуры
                И Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)
00.003,000
00.003,000
00.002,000
00.005,000
00.008,000
00.007,000
00.003,407
00.003,395
00.003,502
03.407,000
03.395,000
03.502,000
1.3.4 Внутреннее соединение с условием  использования характеристик, ограничением по типу ссылки и выражением владельца

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры))
            И (ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.ВидыНоменклатуры)
            И (Номенклатура.ВидНоменклатуры = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.ВидыНоменклатуры)))
            И (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)

00.003,000
00.003,000
00.003,000
00.005,000
00.005,000
00.007,000
00.004,059
00.004,057
00.004,053
04.059,000
04.057,000
04.053,000
2 - соединение по виду
2.1 - соединение по виду без условий
2.1.1

Внутреннее соединение "В лоб" по владельцу характеристик номенклатуры, не подходит для соединения по виду

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВладелецХарактеристик= ХарактеристикиНоменклатуры.ВидНоменклатуры)
00.002,000
00.002,000
00.002,000
00.004,000
00.004,000
00.005,000
00.003,156
00.003,159
00.003,177
03.156,000
03.159,000
03.177,000
2.2 - соединение по виду с отборами
2.2.1 Внутреннее соединение "В лоб" по виду номенклатуры, с последующим отбором по признаку использования характеристик ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.ВидНоменклатуры)
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
00.003,000
00.002,000
00.002,000
00.004,000
00.006,000
00.004,000
00.003,441
00.003,456
00.003,441
03.441,000
03.456,000
03.441,000
2.3 - соединение по виду с условиями
2.3.1 Внутреннее соединение с условием  использования характеристик ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
        И Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.ВидНоменклатуры)
00.003,000
00.002,000
00.002,000
00.005,000
00.005,000
00.005,000
00.003,476
00.003,431
00.003,458
03.476,000
03.431,000
03.458,000

К сожалению, рабочей базы с подходящей номенклатурой под рукой нет, замеры проводил на демо.

Различных вариантов получилось много.

Как и в предыдущих замерах соединение с последующим отбором занимает больше времени, чем отбор во время соединения. Так же многие условия косвенно уже выполняются (1.2.1 например, если владелец вид номенклатуры - то это общие характеристики, проверять после этого номенклатуру не имеет особого смысла).

Лучший вариант по замерам: просто соединить по реквизиту номенклатуры.



 

 
4 Этап - объединение запросов
Особенности
Текст запроса
Время выполнения
Лучшее
Худшее
Среднее
Общее
4 подзапроса

Объединение из самых быстрых

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура),
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура

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

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)

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

ВЫБРАТЬ
    Номенклатура.Ссылка,
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО Номенклатура.ВладелецХарактеристик = ХарактеристикиНоменклатуры.ВидНоменклатуры

00.017,000
00.016,000
00.017,000
00.039,000
00.032,000
00.026,000
00.017,999
00.018,012
00.017,944
17.999,000
18.012,000
17.944,000
3 подзапроса
запрос явно не оптимальный, хотя и сокращает количество подзапросов

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура),
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура

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

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

03.068,000 08.579,000 03.829,317 1:03:49.317,000
Изменил на соединение по виду номенклатуры. Чуть быстрее, но все равно не оптимально.

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура),
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура

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

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

03.001,000 - - -
2 подзапроса
явно не оптимально

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

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

03.514,000      
явно не оптимально

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

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

03.701,000      
1 подзапрос
долго, нудно... но одним подзапросом ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (ВЫБОР
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                        И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
                    ТОГДА Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура))
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
                    ТОГДА Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.ВидНоменклатуры
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
                    ТОГДА Номенклатура.ВладелецХарактеристик = ХарактеристикиНоменклатуры.ВидНоменклатуры
            КОНЕЦ)
ГДЕ
    НЕ Номенклатура.ЭтоГруппа
    И ВЫБОР
            КОГДА не Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)
                    И ХарактеристикиНоменклатуры.Ссылка ЕСТЬ NULL
                ТОГДА ЛОЖЬ
            ИНАЧЕ ИСТИНА
        КОНЕЦ
03.951,000      

Заключаем, что "Выбор" при соединении замедляет скорость запроса.

Для того, чтобы все собрать в один подзапрос пришлось делать "Левое" соединение.

Без проверки на NULL запрос вытаскивал номенклатуру с отсутствующим списком характеристик (номенклатуру создали, характеристики к ней еще нет).

 
 Итоговые запросы

 Запрос для быстрого вывода всей номенклатуры со всеми характеристиками, состоит из 4 подзапросов

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)

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

ВЫБРАТЬ
    ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура),
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
ГДЕ
    ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура

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

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ХарактеристикиНоменклатуры.Ссылка КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.Владелец)

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

ВЫБРАТЬ
    Номенклатура.Ссылка,
    ХарактеристикиНоменклатуры.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО Номенклатура.ВладелецХарактеристик = ХарактеристикиНоменклатуры.ВидНоменклатуры

Запрос вывода всей номенклатуры в одном подзапросе

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ЕСТЬNULL(ХарактеристикиНоменклатуры.Ссылка, ЗНАЧЕНИЕ(справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
        ПО (ВЫБОР
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры)
                        И ХарактеристикиНоменклатуры.Владелец ССЫЛКА Справочник.Номенклатура
                    ТОГДА Номенклатура.Ссылка = (ВЫРАЗИТЬ(ХарактеристикиНоменклатуры.Владелец КАК Справочник.Номенклатура))
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры)
                    ТОГДА Номенклатура.ВидНоменклатуры = ХарактеристикиНоменклатуры.ВидНоменклатуры
                КОГДА Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры)
                    ТОГДА Номенклатура.ВладелецХарактеристик = ХарактеристикиНоменклатуры.ВидНоменклатуры
            КОНЕЦ)
ГДЕ
    НЕ Номенклатура.ЭтоГруппа
    И ВЫБОР
            КОГДА не Номенклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(перечисление.ВариантыИспользованияХарактеристикНоменклатуры.неИспользовать)
                    И ХарактеристикиНоменклатуры.Ссылка ЕСТЬ NULL
                ТОГДА ЛОЖЬ
            ИНАЧЕ ИСТИНА
        КОНЕЦ

 

Надеюсь, что замеры и различные подходы, приведенные в данной статье, помогут Вам найти наилучшее решение для выполнения Вашей задачи.

Тестирование проводилось на УТ 11.4.13.155.

Прикладываю файл запросов, открывать Универсальные инструменты 1С

Запрос Номенклатура Характеристика Замеры

См. также

Метод Дугласа-Пойкера для эффективного хранения метрик

Математика и алгоритмы Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    1925    stopa85    12    

34

Алгоритм симплекс-метода для решения задачи раскроя

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    4784    user1959478    50    

34

Регулярные выражения на 1С

Математика и алгоритмы Инструментарий разработчика Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    7815    5    SpaceOfMyHead    17    

56

Мини-обзор разных решений задач

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    3152    RustIG    6    

25

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    7991    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

Математика и алгоритмы Платформа 1С v8.3 Бесплатно (free)

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4601    fishca    13    

37

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    9012    John_d    73    

46
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. capitan 2473 30.07.21 21:57 Сейчас в теме
Ставьте лайк кто на логотипе увидел полную ...
А по запросу - если все равно тащится вся таблица, так может и не надо ничего соединять?
Выбрать ВСЕхарактеристики и из них получить владельца + ВСЮ номенклатуру без характеристик ?
И ОБЪЕДИНИТЬ ?
2. Daemonold 19 30.07.21 22:22 Сейчас в теме
(1) что и сделано в итоговом запросе с 3 объединениями. Вопрос скорее о том в каком виде это отработает быстрее.
Недавно напоролся на типовой запрос в сегментах - таки там в схеме запрос по замерам будет гораздо дольше выполняться (4 сек против 30 мс).
3. triviumfan 93 04.08.21 18:42 Сейчас в теме
Статья новичка только начавшего познавать запросы.
ЗЫ: Ещё неверно понимаешь что есть "подзапрос".
Оставьте свое сообщение