junior
Как создать индекс?
Индекс создаётся с помощью оператора CREATE INDEX или неявно — при определении ограничений PRIMARY KEY и UNIQUE в операторе CREATE TABLE.
Пример
-- Явное создание индекса
CREATE INDEX idx_employees_name ON employees(name);
-- Уникальный индекс
CREATE UNIQUE INDEX idx_users_email ON users(email);
-- Составной индекс (порядок столбцов важен)
CREATE INDEX idx_orders_user_date ON orders(user_id, created_at);
-- Неявное создание через ограничение
CREATE TABLE users (
id SERIAL PRIMARY KEY, -- автоматически создаёт уникальный индекс
email VARCHAR(255) UNIQUE, -- автоматически создаёт уникальный индекс
name VARCHAR(100)
);
При создании индекса на таблице с данными операция может заблокировать запись. В PostgreSQL для создания индекса без блокировки используется CREATE INDEX CONCURRENTLY, который строит индекс в фоновом режиме, позволяя продолжать операции записи.
Пример
-- Создание индекса без блокировки таблицы (PostgreSQL)
CREATE INDEX CONCURRENTLY idx_orders_status ON orders(status);
На собеседовании: упомяните оба способа создания (явный и через ограничения) и
CONCURRENTLYдля production. Частая ошибка — не знать, чтоCREATE INDEXблокирует запись в таблицу.