[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-postgresql-kakie-tipy-indeksov-podderzhivaet-postgresql":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},937,"kakie-tipy-indeksov-podderzhivaet-postgresql",28,"postgresql","PostgreSQL","🐘","Какие типы индексов поддерживает PostgreSQL?","PostgreSQL поддерживает шесть типов индексов, каждый из которых оптимизирован для определённых сценариев. B-tree используется по умолчанию и покрывает большинство задач, но для JSON, массивов, геоданных и временных рядов нужны специализированные типы.\n\n### B-tree (по умолчанию)\n\nСбалансированное дерево поиска. Используется для операций сравнения: `=`, `\u003C`, `>`, `\u003C=`, `>=`, `BETWEEN`, `IN`, `IS NULL`, а также для `LIKE 'prefix%'`.\n\n```sql\nCREATE INDEX idx_users_email ON users (email);\n```\n\n### Hash\n\nХеш-таблица. Оптимизирован только для операции равенства (`=`). Занимает меньше места, чем B-tree. С PostgreSQL 10 хеш-индексы WAL-безопасны (реплицируются).\n\n```sql\nCREATE INDEX idx_users_uuid ON users USING hash (external_id);\n```\n\n### GIN (Generalized Inverted Index)\n\nОбратный (инвертированный) индекс. Используется для составных значений: массивов, JSONB, полнотекстового поиска (`tsvector`), `hstore`.\n\n```sql\nCREATE INDEX idx_doc_content ON documents USING GIN (to_tsvector('russian', content));\nCREATE INDEX idx_settings ON client_settings USING GIN (settings);\n```\n\n### GiST (Generalized Search Tree)\n\nОбобщённое дерево поиска. Используется для геоданных (PostGIS), диапазонных типов (`int4range`, `tsrange`), полнотекстового поиска, нечёткого поиска (`pg_trgm`).\n\n```sql\nCREATE INDEX idx_location ON branches USING GiST (coordinates);\nCREATE INDEX idx_period ON contracts USING GiST (valid_period);\n```\n\n### BRIN (Block Range Index)\n\nХранит мин\u002Fмакс значения для диапазонов физических блоков. Очень компактный. Эффективен для больших таблиц, где данные физически коррелируют с порядком индексируемого столбца (например, временные метки при последовательной вставке).\n\n```sql\n-- Идеально для таблицы логов, где данные вставляются хронологически\nCREATE INDEX idx_logs_created ON audit_logs USING BRIN (created_at);\n```\n\n### SP-GiST (Space-Partitioned GiST)\n\nДля данных с естественным кластерным разбиением: IP-адреса, телефонные номера, геоданные.\n\n```sql\nCREATE INDEX idx_ip ON connections USING SPGIST (ip_address inet_ops);\n```\n\n> **На собеседовании:** не нужно знать все шесть наизусть — достаточно B-tree, GIN и BRIN. Покажите понимание: B-tree для сравнений, GIN для «содержит» (массивы, JSON, полнотекст), BRIN для огромных таблиц с хронологическими данными. Остальные назовите по сценарию применения.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Какие типы индексов поддерживает PostgreSQL? — Gymterview","PostgreSQL поддерживает шесть типов индексов, каждый из которых оптимизирован для определённых сценариев. B-tree используется по умолчанию и покрывает большинст","PostgreSQL поддерживает шесть типов индексов, каждый из которых оптимизирован для определённых сценариев. B-tree использ",[7,13],"PostgreSQL поддерживает шесть типов индексов, каждый из которых оптимизирован для определённых сценариев. B-tree используется по умолчанию и покрывает большинство задач, но для JSON, массивов, геоданных и временных рядов нужны специализированные типы.",true]