Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: clustered, index, nonclustered, btree, range, seek

Как работают кластеризованные и некластеризованные индексы? Когда их стоит применять?

Этот вопрос проверяет понимание различий между физическим порядком данных и отдельной структурой индекса.

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

Кластеризованный индекс хранит строки таблицы в порядке ключа — это сама таблица, упорядоченная по первичному ключу. Некластеризованный — отдельная структура (B-tree), которая хранит ключи и указатели на строки. Кластеризованный выгоден, если часто читают диапазоны по ключу, но таблица может упорядочиваться только одним способом. Некластеризованные подходят для дополнительных полей и точечного поиска.

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

Кластеризованный индекс:

  • Физическая сортировка данных в таблице по ключу.

  • Быстрый последовательный считывание диапазонов.

  • Можно иметь только один такой индекс на таблицу.

Некластеризованный индекс:

  • Отдельная B-tree структура: ключ → RID (row identifier).

  • Поддерживает несколько индексов на разные столбцы.

  • Сначала ищет в индексе, затем по RID добирается до строки.

Когда применять:

  • Clustered: для таблиц с явным порядком (даты, ID) и большими диапазонными запросами.

  • Nonclustered: для точечных запросов по альтернативным полям, JOIN-ключам.

Пример:

CREATE CLUSTERED INDEX idx_orders_date ON orders(order_date);
CREATE INDEX idx_orders_customer ON orders(customer_id);

Вывод:

Балансируйте: один кластеризованный для частых диапазонов, несколько некластеризованных для фильтров.

  • Аватар

    Golang Guru

    Maxim Lukyanov

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

Уровень

  • Рейтинг:

    2

  • Сложность:

    8

Навыки

  • Postgres

    Postgres

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

#clustered

#index

#nonclustered

#btree

#range

#seek

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

  • Аватар

    Golang Guru

    Maxim Lukyanov

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