Оптимизация работы с базой данных

Мы — aify.studio: делаем ИИ‑системы и надёжный backend, который решает бизнес‑задачи, а не просто «показывает демку». Пишем про архитектуру, LangGraph/LangSmith, базы данных и реальные кейсы внедрения — честно, по делу и с метриками. Если вам нужны практические решения и инженерные подходы без хайпа — вы по адресу.

оптимизация бдsql-запросыиндексы

#Rokcet_post

Сегодня почти каждое цифровое решение использует базы данных. Но даже самая продуманная архитектура может столкнуться с проблемой: приложение тормозит, пользователи жалуются на отклик. Во многих случаях причина проста — неоптимизированные SQL-запросы.

База тормозит - бизнес теряет деньги!

Мы создаем производительные программные решения, в том числе с вниманием к работе над данными. Ниже часть практических советов которые мы применяем на проектах, чтобы снизить нагрузку на БД, ускорить отклик приложений:

  1. 1. Используй имена колонок вместо * в SELECT

    Делай выборку только по тем столбцам, которые будут использованы, в противном случае это только увеличивает объем передаваемых данных, которые не будут использованы в последствии.

  2. 2. Избегай HAVING

    Для фильтрации строк используй WHERE, а не HAVING, потому что HAVING применяется как фильтр уже по всем полученным строкам, а WHERE отфильтрует строки на этапе выборки.

  3. 3. Убирай лишние DISTINCT

    Не следует использовать DISTINCT, если можно обойтись без него — он добавляет накладные расходы(в зависимости от СУБД: sort+unique(ресурсоемко) или HashAggregate(потребует доп памяти).

  4. 4. Избавляйся от ненужных вложенных подзапросов (unnest)

    такие конструкции частенько можно переписать с помощью JOIN или CTE (WITH).

  5. 5. Используй IN`по индексируемым колонкам

    Если колонка индексирована, IN (...) работает быстрее, чем кажется.

  6. 6. Заменяй UNION на UNION ALL, если дубликаты не важны

    UNION удаляет дубликаты(использует DISTINCT под капотом), что требует дополнительных ресурсов.

Иллюстрация: персонаж с рюкзаком, стрелками и подписями «Оптимизация»/«БД», символичное изображение для материала по SQL.
Схематичная карикатура, иллюстрирующая тему оптимизации баз данных.

Читайте так же