Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад

Создается ли индекс для Primary Key?

Проверяет понимание автоматического создания индекса для первичного ключа в реляционных базах данных.

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

Да, при создании первичного ключа (PRIMARY KEY) в большинстве СУБД автоматически создается уникальный индекс. Этот индекс обеспечивает быстрый поиск по первичному ключу и поддерживает ограничение уникальности. В СУБД, таких как PostgreSQL, MySQL и SQL Server, индекс создается неявно. В SQL Server по умолчанию создается кластеризованный индекс, если он не указан явно.

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

Автоматическое создание индекса для Primary Key

Да, практически во всех реляционных базах данных при создании первичного ключа (PRIMARY KEY) автоматически создается уникальный индекс. Это необходимо для обеспечения двух ключевых свойств первичного ключа: уникальности и быстрого доступа к строкам.

Как это работает

Первичный ключ гарантирует, что каждая строка в таблице уникально идентифицируется. Для эффективной проверки уникальности при вставке новых данных и для быстрого поиска по первичному ключу (например, в JOIN или WHERE) СУБД создает индекс. Без индекса проверка уникальности требовала бы полного сканирования таблицы, что крайне неэффективно.

Примеры в разных СУБД

  • PostgreSQL и MySQL: Создается уникальный B-tree индекс. Тип индекса (кластеризованный или нет) зависит от СУБД. В MySQL InnoDB первичный ключ является кластеризованным индексом.
  • SQL Server: По умолчанию создается кластеризованный уникальный индекс. Если в таблице уже есть кластеризованный индекс, то для первичного ключа будет создан некластеризованный уникальный индекс.
  • Oracle: Создается уникальный индекс, но он не обязательно кластеризованный (Oracle использует понятие "index-organized table" для кластеризации).

Пример кода (SQL Server)

CREATE TABLE Users (
    UserID INT PRIMARY KEY,  -- Автоматически создается кластеризованный уникальный индекс
    UserName NVARCHAR(100)
);

-- Проверка существующих индексов
SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID('Users');
-- Результат покажет автоматически созданный индекс с именем PK__Users__...

Вывод

Автоматическое создание индекса для первичного ключа — это стандартное поведение реляционных СУБД, обеспечивающее целостность данных и производительность запросов. Понимание этого механизма важно для проектирования эффективных схем баз данных и оптимизации производительности.

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • SQL

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

#primary key

#index

#database

#SQL

#clustered index

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