Sobes.tech
Back to questions
Middle+
3

Как работают индексы в PostgreSQL? Когда индекс не работает?

Companies where asked
Umbrella IT

Answer from AI

sobes.tech AI

Индексы в PostgreSQL — это структуры данных (обычно B-деревья), которые ускоряют поиск строк в таблицах по определённым колонкам. Когда вы делаете запрос с условием WHERE по индексированному полю, СУБД может быстро найти нужные записи, не сканируя всю таблицу.

Индекс не работает или используется неэффективно в следующих случаях:

  • Запрос не использует колонки, по которым есть индекс.
  • Использование функций или выражений над индексированными колонками (например, WHERE LOWER(name) = 'abc'), если нет соответствующего функционального индекса.
  • Очень маленькие таблицы, где полное сканирование быстрее.
  • Запросы с условиями, которые возвращают большую часть таблицы — тогда PostgreSQL может выбрать последовательное сканирование.
  • Индексы не подходят для LIKE с шаблонами, начинающимися с подстановочного знака ('%abc').

Пример создания индекса:

CREATE INDEX idx_users_email ON users(email);

И использование в запросе:

SELECT * FROM users WHERE email = 'user@example.com';

В этом случае индекс поможет быстро найти пользователя по email.