[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-bazy-dannykh-kakie-tipy-indeksov-sushchestvuyut":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":17,"progress":18,"seo":19},1138,"kakie-tipy-indeksov-sushchestvuyut",35,"bazy-dannykh","Базы данных","🗄️","Какие типы индексов существуют?","Типы индексов определяются их внутренней структурой, влиянием на физическое расположение данных и областью применения. Классификация многомерна: один и тот же индекс можно описать по нескольким категориям одновременно.\n\n### По структуре данных\n\n| Тип | Описание | Подходит для |\n|-----|----------|-------------|\n| B-tree (B+tree) | Сбалансированное дерево, самый распространённый | Равенство, диапазоны, сортировка |\n| Hash | Хранит хэши значений, поиск за O(1) | Только точное равенство (=) |\n| GiST | Обобщённое дерево поиска | Геоданные, полнотекстовый поиск |\n| GIN (инвертированный) | Словарь слов с указателями на документы | Полнотекстовый поиск, JSONB, массивы |\n| BRIN | Хранит диапазоны значений для блоков страниц | Большие таблицы с естественной сортировкой |\n\n### По воздействию на физическое расположение данных\n\n| Тип | Описание |\n|-----|----------|\n| Кластерный | Данные физически упорядочены по индексу. Один на таблицу |\n| Некластерный | Отдельная структура со ссылками на строки. Может быть много |\n\n### По количеству столбцов\n\n| Тип | Описание | Пример |\n|-----|----------|--------|\n| Простой | По одному столбцу | `CREATE INDEX idx ON t(col1)` |\n| Составной (композитный) | По нескольким столбцам, порядок важен | `CREATE INDEX idx ON t(col1, col2)` |\n| С включёнными столбцами | Ключевые + неключевые столбцы (covering index) | `CREATE INDEX idx ON t(col1) INCLUDE (col2)` |\n\n### По содержимому\n\n| Тип | Описание |\n|-----|----------|\n| Уникальный | Все значения уникальны |\n| Частичный (partial) | Индексирует только строки, удовлетворяющие условию |\n| Функциональный | Построен по результату выражения или функции |\n| Полнотекстовый | Оптимизирован для поиска по тексту |\n| Пространственный | Оптимизирован для геоданных (координаты) |\n| Битовый (bitmap) | Битовая карта для каждого значения, эффективен при низкой кардинальности |\n| Обратный (reverse) | B-tree с реверсированным ключом, снимает конкуренцию за последний блок при автоинкременте |\n\n### По покрытию данных\n\n| Тип | Описание |\n|-----|----------|\n| Полный | Покрывает все строки таблицы |\n| Частичный (partial) | Покрывает подмножество строк по условию |\n| Покрывающий (covering) | Содержит все столбцы, нужные запросу (Index Only Scan) |\n\n### Примеры создания\n\n\u003Cdetails>\u003Csummary>Примеры создания различных индексов (PostgreSQL)\u003C\u002Fsummary>\n\n```sql\n-- B-tree (по умолчанию)\nCREATE INDEX idx_users_email ON users(email);\n\n-- Уникальный\nCREATE UNIQUE INDEX idx_users_email_uniq ON users(email);\n\n-- Составной\nCREATE INDEX idx_orders_user_date ON orders(user_id, created_at);\n\n-- Частичный (только активные)\nCREATE INDEX idx_users_active ON users(email) WHERE active = true;\n\n-- Функциональный (поиск без учёта регистра)\nCREATE INDEX idx_users_lower_email ON users(LOWER(email));\n\n-- GIN для JSONB\nCREATE INDEX idx_data_gin ON documents USING GIN(data);\n\n-- Покрывающий (INCLUDE)\nCREATE INDEX idx_orders_covering ON orders(user_id) INCLUDE (total, status);\n\n-- Hash (только для равенства)\nCREATE INDEX idx_sessions_token ON sessions USING HASH(token);\n```\n\n\u003C\u002Fdetails>\n\n> **На собеседовании:** достаточно знать B-tree, Hash, GIN, уметь объяснить кластерный vs некластерный, и понимать разницу между составным и покрывающим индексом. Частая ошибка — перечислить 20 типов без понимания, когда какой применять.","","middle",[15,16],"databases","performance",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":35,"featuredSnippetReady":36},"Какие типы индексов существуют в базе данных — Gymterview","Типы индексов: B-tree, Hash, GiST, GIN, BRIN. Кластерный vs некластерный, простой vs составной, уникальный, частичный, покрывающий. Примеры на PostgreSQL.","Типы индексов в базе данных: B-tree, Hash, GIN, GiST — Gymterview","Классификация индексов по структуре, покрытию и содержимому. B-tree, Hash, GIN, составной, покрывающий, частичный.",[25,26,27,28,29,30,31,32,33,34],"типы индексов","B-tree","Hash index","GIN","GiST","BRIN","составной индекс","покрывающий индекс","partial index","PostgreSQL","Индексы классифицируются по структуре (B-tree, Hash, GiST, GIN, BRIN), по расположению данных (кластерный, некластерный), по количеству столбцов (простой, составной, покрывающий), по содержимому (уникальный, частичный, функциональный, полнотекстовый, пространственный, битовый). B-tree — самый распространённый, подходит для равенства, диапазонов и сортировки.",true]