Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Postgres: sql, optimization, index, join, null, partial, explain

Какие методы использовали для оптимизации SQL-запросов (индексы, уменьшение JOIN, проверка на NULL)?

Этот вопрос проверяет знание практических приёмов ускорения выполнения запросов.

Короткий ответ

Для ускорения запросов создавали индексы по часто используемым полям, в том числе составные. Сокращали число JOIN, преобразуя сложные запросы в несколько простых или денормализуя данные. Исключали проверку на NULL в WHERE, чтобы избежать полного сканирования («IS NULL» плохо индексируется), и использовали предикаты вида column = value.

Длинный ответ

Индексы:

  • B-tree-индексы для точного поиска и диапазонов.

  • Составные индексы по полям, которые вместе участвуют в фильтрах.

  • Индексы-частичные (WHERE status = 'active') для часто встречающихся статусов.

Уменьшение JOIN:

  • Денормализация: хранение часто запрашиваемых полей в одной таблице.

  • Разбиение одного сложного JOIN-запроса на два более простых с промежуточной записью в temp-table.

Проверка NULL:

  • Избегали IS NULL в условиях, вместо этого использовали column = '' или column IS NOT DISTINCT FROM value.

  • Для обязательных столбцов ставили NOT NULL, чтобы упростить плэннеру выбор индекса.

EXPLAIN / ANALYZE:

  • Всегда анализировали планы выполнения, выявляя узкие места.

Кэширование на уровне запросов:

  • Materialized views для предрасчитанных результатов.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • Postgres

    Postgres

Ключевые слова

#sql

#optimization

#index

#join

#null

#partial

#explain

Подпишись на Python Developer в телеграм