Встречается на собеседованиях • сегодня

Как добавить индекс в таблицу, состоящую из миллиона записей в PostgreSQL

Для добавления индекса в PostgreSQL на большой таблице используйте CREATE INDEX CONCURRENTLY, чтобы избежать блокировки таблицы на время создания:

sql
CREATE INDEX CONCURRENTLY idx_name ON table_name(column_name);

Важные нюансы:

  1. CONCURRENTLY позволяет читать/писать в таблицу во время создания индекса
  2. Процесс занимает больше времени и ресурсов
  3. Нельзя использовать в транзакции
  4. При ошибке создаст "невалидный" индекс (проверить можно через pg_indexes)

Для очень больших таблиц лучше создавать индекс в период низкой нагрузки. Если нужно ускорить процесс, можно временно увеличить maintenance_work_mem:

sql
SET maintenance_work_mem = '1GB';
CREATE INDEX CONCURRENTLY idx_name ON large_table(column);
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы