#Rokcet_post
Сегодня почти каждое цифровое решение использует базы данных. Но даже самая продуманная архитектура может столкнуться с проблемой: приложение тормозит, пользователи жалуются на отклик. Во многих случаях причина проста — неоптимизированные SQL-запросы.
База тормозит - бизнес теряет деньги!
Мы создаем производительные программные решения, в том числе с вниманием к работе над данными. Ниже часть практических советов которые мы применяем на проектах, чтобы снизить нагрузку на БД, ускорить отклик приложений:
1. Используй имена колонок вместо * в SELECT
Делай выборку только по тем столбцам, которые будут использованы, в противном случае это только увеличивает объем передаваемых данных, которые не будут использованы в последствии.
2. Избегай HAVING
Для фильтрации строк используй WHERE, а не HAVING, потому что HAVING применяется как фильтр уже по всем полученным строкам, а WHERE отфильтрует строки на этапе выборки.
3. Убирай лишние DISTINCT
Не следует использовать DISTINCT, если можно обойтись без него — он добавляет накладные расходы(в зависимости от СУБД: sort+unique(ресурсоемко) или HashAggregate(потребует доп памяти).
4. Избавляйся от ненужных вложенных подзапросов (unnest)
такие конструкции частенько можно переписать с помощью JOIN или CTE (WITH).
5. Используй IN`по индексируемым колонкам
Если колонка индексирована, IN (...) работает быстрее, чем кажется.
6. Заменяй UNION на UNION ALL, если дубликаты не важны
UNION удаляет дубликаты(использует DISTINCT под капотом), что требует дополнительных ресурсов.


