Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
IT и технологии · 7 июля 2026 г.
Индексы в PostgreSQL: Часть 1 — B-Tree — 7 июля 2026 г. в 05:48:25
Индексы в PostgreSQL: Часть 1 — B-Tree Если ты создавал индекс в PostgreSQL по умолчанию, значит, это B-Tree. Но как он работает и когда он реально полезен? Что это такое? B-Tree индекс — сбалансированное дерево поиска. PostgreSQL автоматически использует его для: =\` (равенство) > < >= <= (сравнения) BETWEEN LIKE 'abc%' (только префикс, без %abc%). Пример: CREATE INDEX idx_users_email ON users (email); SELECT * FROM users WHERE email = 'test@example.com'; Запрос не будет сканировать всю таблицу — он сразу пойдёт по дереву. Подводные камни: 1. Не работает для произвольных LIKE: LIKE '%abc%' → индекс не поможет. 2. Осторожно с функциями: WHERE LOWER(email) = 'abc' — индекс не используется. Нужен функциональный индекс: CREATE INDEX idx_users_email_lower ON users (LOWER(email)); 3. Многоколонковые индексы: Порядок важен. (a, b) используется при фильтре по a или по a AND b, но не только по b. Когда ставить? - Уникальные поля (email, username). - Часто используемые фильтры и JOIN-колонки. - Сортировки (ORDER BY created_at DESC). Вывод: B-Tree — твой “универсальный солдат”. Но не пихай его на всё подряд. Перед добавлением — смотри EXPLAIN (ANALYZE). Сохрани, чтобы не забыть! #db 👉 @database_info