Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: postgresql, index, explain, query, optimization

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

Вопрос проверяет понимание оптимизатора запросов PostgreSQL и причин отказа от использования индексов.

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

Индекс может не использоваться, когда:

  1. Выборка > ~5-10% таблицы

  2. Индекс не покрывает запрос

  3. Низкая селективность данных

  4. Отсутствует статистика

  5. Малые таблицы (seq scan быстрее)

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

Основные причины:

  1. Большой % данных
    Оптимизатор выбирает seq scan, если нужно >5-10% строк:

    SELECT * FROM users WHERE age > 18;  -- Если 90% пользователей >18
  2. Не покрывающий индекс
    Индекс не содержит всех нужных полей:

    CREATE INDEX idx_name ON users(name);
    SELECT * FROM users WHERE name LIKE 'A%';  -- Доп. чтение таблицы
  3. Низкая селективность
    Для колонок с малым числом уникальных значений (пол, статус):

    SELECT * FROM users WHERE gender = 'F';  -- 50% строк
  4. Отсутствие статистики
    После массовых изменений:

    ANALYZE users;  -- Обновить статистику
  5. Малые таблицы
    Seq scan быстрее для таблиц <1000 строк.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    1

  • Сложность:

    6

Навыки

  • Postgres

    Postgres

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

#postgresql

#index

#explain

#query

#optimization

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.