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

Текст запросов 1С которые разработчики в программном коде отправили на экспертизу производительности системы.
Необходимо (если необходимо) выдать рекомендации программистам по оптимизации их для выполнения на нагруженной многопользовательской системе.

1 запрос

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Контрагенты.Ссылка КАК Контрагент
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.Наименование ПОДОБНО &НаименованиеКонтрагент1 ИЛИ
| Контрагенты.Наименование ПОДОБНО &НаименованиеКонтрагент2";
Запрос.УстановитьПараметр("НаименованиеКонтрагент1","%Контрагент1%" );
Запрос.УстановитьПараметр("НаименованиеКонтрагент2","%Контрагент2%" );
КонтрагентыДляИсключения = Запрос.Выполнить().Выгрузить();

2 запрос

Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЗаявкаНаРемонтОтбор.Ссылка,
| ЗаявкаНаРемонтОтбор.ПодразделениеКомпании
|ПОМЕСТИТЬ ЗаявкиДляОтбора
|ИЗ
| Документ.ЗаявкаНаРемонт КАК ЗаявкаНаРемонтОтбор
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущееСостояниеСтатусов КАК ТекущееСостояниеСтатусов
| ПО (ТекущееСостояниеСтатусов.Документ = ЗаявкаНаРемонтОтбор.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд КАК ЗаказНарядОтбор
| ПО ЗаявкаНаРемонтОтбор.Ссылка = ЗаказНарядОтбор.ДокументОснование
| ЛЕВОЕ СОЕДИНЕНИЕ БизнесПроцесс.ВнешнийЗвонокКлиента КАК ВнешнийЗвонокКлиента
| ПО (ВЫРАЗИТЬ(ЗаявкаНаРемонтОтбор.ВходящийКонтакт КАК БизнесПроцесс.ВнешнийЗвонокКлиента).Ссылка = ВнешнийЗвонокКлиента.Ссылка)
| И (ВнешнийЗвонокКлиента.ВидОбращения = ЗНАЧЕНИЕ(Перечисление.ВидыОбращенийКлиентов.Улица))
|ГДЕ
| НЕ ЗаявкаНаРемонтОтбор.ПометкаУдаления
| И ЗаявкаНаРемонтОтбор.ДатаНачала МЕЖДУ &Дата1 И &Дата2
| И НЕ ТекущееСостояниеСтатусов.Статус = &ЗначениСтатусаОтменено
| И ЗаявкаНаРемонтОтбор.ПодразделениеКомпании = &ПодразделениеКомпании
| И (ЗаявкаНаРемонтОтбор.ДополнительныеПродажи = """"
| ИЛИ ЗаявкаНаРемонтОтбор.КроссПродажи = """"
| ИЛИ ЗаявкаНаРемонтОтбор.ПлановаяСуммаРасширения = 0)
| И ЗаявкаНаРемонтОтбор.Мастер = &Сотрудник
| И ВЫБОР
| КОГДА ЗаказНарядОтбор.Ссылка ЕСТЬ NULL
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| И ВнешнийЗвонокКлиента.Ссылка ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////­////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ОтветственныеЛица.Объект КАК Подразделение,
| ЗаявкиДляОтбора.Ссылка
|ИЗ
| РегистрСведений.ОтветственныеЛица КАК ОтветственныеЛица
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЗаявкиДляОтбора КАК ЗаявкиДляОтбора
| ПО (ЗаявкиДляОтбора.ПодразделениеКомпании = ОтветственныеЛица.Объект
| ИЛИ ЗаявкиДляОтбора.ПодразделениеКомпании.Родитель = ОтветственныеЛица.Объект)
|ГДЕ
| (ОтветственныеЛица.Пользователь = &Пользователь
| ИЛИ ОтветственныеЛица.Пользователь = &Должность)
| И ОтветственныеЛица.Объект = &ПодразделениеКомпании
| И ОтветственныеЛица.ЗонаОтветственности = &ЗонаОтветственности
| И ОтветственныеЛица.НеПроверятьДо < &НеПроверятьДо
|
|СГРУППИРОВАТЬ ПО
| ОтветственныеЛица.Объект,
| ЗаявкиДляОтбора.Ссылка";
Запрос.УстановитьПараметр("ТекущаяДатаВремя",ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("НеПроверятьДо",ТекущаяДатаСеанса());
Запрос.УстановитьПараметр("Дата1",НачалоДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("Дата2",КонецДня(ТекущаяДатаСеанса()));
Запрос.УстановитьПараметр("ЗначениСтатусаОтменено",Справочники.СтатусыПроцессов.Отменено);
Запрос.УстановитьПараметр("Пользователь",ПараметрыСеанса.Пользователь);
Запрос.УстановитьПараметр("Сотрудник",ПараметрыСеанса.Пользователь.Сотрудник);
Запрос.УстановитьПараметр("Должность",ПараметрыСеанса.Пользователь.Сотрудник.Должность);
Запрос.УстановитьПараметр("ПодразделениеКомпании",ПараметрыСеанса.Пользователь.Подразделение);
Запрос.УстановитьПараметр("ЗонаОтветственности",Перечисления.ЗоныОтветственности.ПодготовитьПланПродаж);
Выборка=Запрос.Выполнить().Выбрать();
---
Второй запрос, точно все левые соединения в Где Ибо в полях их нет

```1c
    ГДЕ
    ЗаявкаНаРемонтОтбор.Ссылка в (Выбрать Документ ИЗ РегистрСведений.ТекущееСостояниеСтатусов)
    И .....
```
---
По первому запросу. Подобно или Like, Это перебор всей таблицы на поиск вхождений. Если Индексированно, то будет по быстрее, если нет. Ух напрягу SQL. по полной программе.
Если Директива ИЛИ, то будет гонять по таблице , столько раз, сколько ИЛИ
---
В Общем, чтобы было понятно, что хотел сказать

```1c
    Выбрать Ссылка Из Справочник.Контаргенты
    Где Наименование подобно "%Хочу быстро%"
    Объединить
    Выбрать Ссылка из Справочник.Контаргенты
    Где Наименование подобно "%Хочу еще шустрее%"
```

Отработает шустрее. Бо набор наборы меньше
---
Потому как то с подобно наверное лучше закинуть в ВТ, проиндексировать
И Далее
Выбрать по первому условию
Объединить
Выбрать по второму условию
ИМХО
---
Второй запрос.
Ставите Выразить в условие ПО
По сути выполняется вложенный запрос.
Опять таки такие вещи лучше Выбрать Объединить
---
Далее. не интересно
Для начала исправьте первые ошибки, которые режут глаза
---
Ну и в Условиях ставим первыми, которые индексированы. Плохие типа Подобно в конце
---
Второй запрос, точно все левые соединения в Где Ибо в полях их нет

```1c
    ГДЕ
    ЗаявкаНаРемонтОтбор.Ссылка в (Выбрать Документ ИЗ РегистрСведений.ТекущееСостояниеСтатусов)
    И .....
```