#std729

Общие требования по разработке оптимальных запросов

Прежде чем переходить к продвинутым приемам оптимизации, убедитесь, что сам запрос адекватен задаче.

1.1.

Минимизируйте объем выборки: выбирайте только данные, необходимые для решения задачи.

Если нужны конкретные поля, не используйте ВЫБРАТЬ *.

Если нужно выполнять свертку, сортировку или вычисления, сначала проверьте, можно ли переложить эти операции на СУБД и сразу получить готовый результат.

1.2.

В большинстве случаев следует минимизировать и общее количество запросов к СУБД.

См. также

#std436: Многократное выполнение однотипных запросов.

2.

Не следует любой ценой переносить выполнение задачи в СУБД: простые запросы СУБД обычно выполняет эффективнее, чем избыточно сложные универсальные.

2.1.

Рассматривайте альтернативы:

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

Для сложных запросов проверяйте, что СУБД выбирает эффективный план выполнения.

Для DB2, PostgreSQL и Oracle вероятность неудачного плана для сложного запроса выше, поэтому не усложняйте запрос без необходимости.

В первую очередь:

План выполнения можно смотреть через консоль запросов, технологический журнал или средства СУБД. Признак проблемного сложного запроса: в плане присутствует timeout warning — оптимизатору не хватило времени выбрать лучший план.

См. также: #std732: Запросы в динамических списках.

Источник

https://its.1c.ru/db/v8std#content:729