[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-postgresql-kogda-kakoy-tip-indeksa-ispolzovat":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},938,"kogda-kakoy-tip-indeksa-ispolzovat",28,"postgresql","PostgreSQL","🐘","Когда какой тип индекса использовать?","Выбор типа индекса зависит от паттерна запросов: какой оператор используется в WHERE и какова природа данных.\n\n| Задача | Рекомендуемый индекс |\n|---|---|\n| Поиск по равенству, диапазону, сортировка | **B-tree** |\n| Только поиск по равенству | **Hash** |\n| Поиск по массивам, JSONB, полнотекстовый поиск | **GIN** |\n| Геоданные, диапазонные типы, нечёткий поиск | **GiST** |\n| Большие таблицы с коррелированными данными (логи, временные ряды) | **BRIN** |\n| IP-адреса, иерархические данные | **SP-GiST** |\n\n\u003Cdetails>\u003Csummary>Примеры для типового приложения\u003C\u002Fsummary>\n\n```sql\n-- B-tree: поиск транзакций по номеру счёта\nCREATE INDEX idx_tx_account ON transactions (account_id);\n\n-- B-tree: сортировка по дате\nCREATE INDEX idx_tx_date ON transactions (created_at DESC);\n\n-- GIN: поиск по JSONB-метаданным платежа\nCREATE INDEX idx_tx_meta ON transactions USING GIN (metadata jsonb_path_ops);\n\n-- BRIN: огромная таблица аудит-логов (миллиарды записей)\nCREATE INDEX idx_audit_ts ON audit_log USING BRIN (event_timestamp)\n    WITH (pages_per_range = 32);\n\n-- GiST: поиск банкоматов по геолокации\nCREATE INDEX idx_atm_location ON atms USING GiST (location);\n\n-- GIN + pg_trgm: нечёткий поиск по имени клиента\nCREATE EXTENSION IF NOT EXISTS pg_trgm;\nCREATE INDEX idx_client_name_trgm ON clients USING GIN (full_name gin_trgm_ops);\nSELECT * FROM clients WHERE full_name ILIKE '%иванов%';\n```\n\n\u003C\u002Fdetails>\n\n> **На собеседовании:** покажите практический подход — не абстрактное знание типов, а привязку к реальным задачам. BRIN для логов экономит место в сотни раз по сравнению с B-tree, GIN + pg_trgm решает задачу поиска «содержит подстроку» (ILIKE '%...%'), которую B-tree не может.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Когда какой тип индекса использовать? — Gymterview","Выбор типа индекса зависит от паттерна запросов: какой оператор используется в WHERE и какова природа данных.",[7,13],true]