Ответ
Да, в подавляющем большинстве современных реляционных СУБД создание ограничения первичного ключа автоматически приводит к созданию уникального индекса. Это необходимо для:
- Обеспечения уникальности: Индекс позволяет эффективно проверять новые значения на отсутствие дубликатов.
- Обеспечения быстрого доступа: Поиск, обновление или удаление записи по первичному ключу выполняется быстро.
- Оптимизации связей (JOIN): Внешние ключи других таблиц ссылаются на проиндексированное значение.
Пример (SQL):
CREATE TABLE employees (
id INT PRIMARY KEY, -- СУБД автоматически создаст уникальный индекс (чаще всего кластерный)
name VARCHAR(100)
);
Важные уточнения:
- Тип индекса: Обычно это B-дерево (B+ tree). В некоторых СУБД (например, MySQL с InnoDB) первичный ключ является кластерным индексом — данные таблицы физически упорядочены по нему.
- Исключения: Некоторые специализированные или устаревшие СУБД могут не создавать индекс автоматически, но это крайняя редкость. В NoSQL БД (например, MongoDB) поле
_idтакже индексируется по умолчанию.