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

Как работает поиск при использовании индекса в PostgreSQL

PostgreSQL использует индексы для ускорения поиска данных, избегая полного сканирования таблицы (sequential scan). При запросе с условием WHERE, СУБД обращается к индексу (например, B-tree), который хранит отсортированные ключи и ссылки на строки.

Пример с B-tree индексом:

sql
-- Создание индекса
CREATE INDEX idx_users_email ON users(email);

-- Запрос, использующий индекс
SELECT * FROM users WHERE email = 'user@example.com';

text

**Нюансы:**  
1. **Типы индексов:** B-tree (по умолчанию), Hash, GIN, GiST – выбор зависит от типа данных и операций.  
2. **Covering Index:** Если индекс содержит все нужные поля, PostgreSQL может не обращаться к таблице (Index-Only Scan).  
3. **Неиспользование индекса:** При неселективных условиях (`WHERE status = true`) или после `LIKE '%pattern'` оптимизатор может выбрать sequential scan.  

**Проверка плана запроса:**  
```sql
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'user@example.com';
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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