Ответ
В основном работал с PostgreSQL. Чаще всего создавал B-tree индексы для колонок, часто используемых в условиях WHERE, JOIN и ORDER BY, например, для полей user_id или created_at.
-- Индекс для ускорения фильтрации
CREATE INDEX idx_orders_user_id ON orders(user_id);
-- Составной индекс с учётом порядка колонок (сначала более селективная)
CREATE INDEX idx_logs_created_at_user_id ON logs(created_at DESC, user_id);
Для полнотекстового поиска использовал GIN-индексы на поля типа tsvector.
CREATE INDEX idx_articles_content_gin ON articles USING gin(to_tsvector('russian', content));
Для работы с геоданными (например, поиск точек в радиусе) применял GiST-индексы.
CREATE INDEX idx_places_location_gist ON places USING gist(location);
При создании индексов всегда оценивал их влияние на производительность записи (INSERT/UPDATE/DELETE) и следил за их фактическим использованием через системное представление pg_stat_all_indexes, чтобы избежать накопления неиспользуемых индексов.