databases•

Індекси в PostgreSQL: як прискорити повільні запити

Розбираємо типи індексів і вчимося читати план виконання запиту.

Індекси в PostgreSQL: як прискорити повільні запити

Індекси в PostgreSQL: як прискорити повільні запити

З чого почати діагностику

Перш ніж додавати індекс навмання, потрібно зрозуміти, що насправді робить база під час виконання запиту. Команда EXPLAIN ANALYZE показує реальний план виконання з фактичним часом кожного кроку, а не лише припущення планувальника.

EXPLAIN ANALYZE
SELECT * FROM orders WHERE customer_id = 42;

Якщо в плані видно Seq Scan по великій таблиці там, де очікувався швидкий точковий пошук, це майже завжди сигнал до додавання індексу на відповідну колонку. Детальніше про суміжний підхід можна прочитати в матеріалі «Шардування бази даних: підходи та підводні камені».

Від запиту через план до індексу

Не всі індекси однакові

B-tree — індекс за замовчуванням і хороший для більшості випадків рівності та діапазонних умов. Для повнотекстового пошуку потрібен GIN-індекс, для геоданих — GiST. Композитний індекс на кількох колонках працює ефективно, лише якщо умови запиту використовують його колонки зліва направо в тому самому порядку, в якому вони оголошені.

Важливо пам'ятати й зворотний бік: кожен індекс уповільнює запис даних і займає місце на диску, тому індекси варто додавати усвідомлено, під конкретні спостережувані повільні запити, а не «про всяк випадок» на кожну колонку таблиці. Ці ідеї перегукуються з темами «NoSQL vs SQL: як обрати правильно» та «Піраміда тестування: баланс unit, integration, e2e».

Схожі матеріали

© 2026 StackPulse. Все права защищены.