Проверяет понимание автоматического создания индексов для внешних ключей в реляционных базах данных.
Внешний ключ (foreign key) — это ограничение, которое обеспечивает ссылочную целостность между двумя таблицами. Оно гарантирует, что значения в столбце дочерней таблицы соответствуют значениям в родительской таблице. Индекс — это отдельная структура данных, ускоряющая поиск и сортировку записей.
Нет, по умолчанию СУБД не создаёт индекс на поле внешнего ключа. Исключением может быть случай, когда внешний ключ является частью первичного ключа (например, в составном первичном ключе). В большинстве реляционных баз данных (PostgreSQL, MySQL, Oracle) индекс нужно создавать вручную.
Без индекса на внешнем ключе операции, такие как JOIN, DELETE или UPDATE в родительской таблице, могут выполняться медленно. Например, при удалении записи из родительской таблицы СУБД должна проверить, нет ли связанных записей в дочерней таблице. Без индекса это приводит к полному сканированию таблицы.
-- Создание таблиц без индекса на внешнем ключе
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id)
);
-- Ручное создание индекса
CREATE INDEX idx_orders_user_id ON orders(user_id);Индекс на внешнем ключе следует создавать вручную для оптимизации производительности запросов, особенно если таблица содержит много записей или часто выполняются операции JOIN. Это стандартная практика при проектировании баз данных.
Уровень
Рейтинг:
4
Сложность:
4
Навыки
Postgres
SQL
Ключевые слова
Подпишись на Python Developer в телеграм