Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: index, scan

Как индексы влияют на скорость чтения?

Вопрос проверяет понимание того, как базы данных ускоряют поиск и за счет чего работают индексы.

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

Индексы позволяют находить строки без полного сканирования таблицы, что ускоряет чтение. База данных использует структуру индекса для быстрого поиска по ключу или диапазону. Однако индекс полезен не во всех запросах, например при низкой селективности. Иногда полный скан может быть быстрее.

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

Индекс — это дополнительная структура данных, которая хранит ключи и ссылки на строки таблицы, позволяя быстрее находить нужные записи.

Определение:
Индекс — это структура, оптимизированная для поиска, обычно реализованная как B-tree или его варианты.

Как индекс ускоряет чтение

Без индекса:

  1. База данных выполняет full table scan.

  2. Каждая строка проверяется на соответствие условию.

С индексом:

  1. Используется index scan.

  2. Находится диапазон ключей.

  3. Переход к нужным строкам.

Пример запроса:

SELECT * FROM users WHERE id = 100;

Если id индексирован, поиск выполняется значительно быстрее.

Почему это быстрее

Причины:

  1. Структура дерева позволяет искать за логарифмическое время.

  2. Читается меньше страниц диска.

  3. Снижается нагрузка на CPU.

Когда индекс не помогает

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

  1. Условие затрагивает большую часть таблицы.

  2. Используется функция над колонкой.

  3. Низкая селективность (например, поле boolean).

В таких случаях оптимизатор может выбрать full scan.

Дополнительные эффекты

Индексы также:

  1. Помогают ускорять JOIN.

  2. Ускоряют ORDER BY и GROUP BY при подходящем индексе.

Вывод

Индексы ускоряют чтение за счет уменьшения объема данных, которые нужно просканировать, но их эффективность зависит от селективности и структуры запроса.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Postgres

    Postgres

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

#index

#scan

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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