Junior
79
questionbank

Какие существуют типы индексов в базах данных?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Основные типы индексов в базах данных:

  1. B-tree (B+tree):

    • Наиболее распространенный тип.
    • Подходит для широкого диапазона операций: поиск по диапазону, точное соответствие, сортировка.
    • Используется по умолчанию во многих СУБД (MySQL, PostgreSQL, Oracle).
  2. Хеш-индексы:

    • Основан на хеш-таблице.
    • Очень быстр для поиска по точному совпадению (=).
    • Не подходит для поиска по диапазону (BETWEEN, <, >), сортировки (ORDER BY) или поиска по шаблону (LIKE).
  3. Полнотекстовые индексы:

    • Предназначены для поиска по тексту в текстовых полях (BLOB, TEXT).
    • Позволяют искать слова или фразы, учитывать синонимы и производить морфологический анализ.
    • Примеры: MATCH...AGAINST в MySQL/MariaDB, tsvector/tsquery в PostgreSQL.
  4. Пространственные индексы (R-tree):

    • Используются для индексации географических или пространственных данных.
    • Позволяют эффективно находить объекты в определенной области или пределах.
  5. Bitmap (битовая карта):

    • Используется в некоторых СУБД (например, Oracle, PostgreSQL).
    • Подходит для полей с низкой кардинальностью (небольшое количество уникальных значений, например, пол, статус: активен/неактивен).
    • Может быть очень эффективен для сложных запросов с операциями AND и OR.
  6. Кластеризованный индекс:

    • Влияет на физический порядок хранения данных строк таблицы.
    • В таблице может быть только один кластеризованный индекс.
    • Часто используется для первичного ключа.
  7. Некластеризованный индекс:

    • Не определяет физический порядок строк.
    • Содержит указатели на физическое расположение строк данных.
    • Таблица может иметь несколько некластеризованных индексов.
  8. Covering (покрывающий) индекс:

    • Индекс, который содержит все столбцы, необходимые для выполнения запроса, включая столбцы в списке SELECT, условиях WHERE и ORDER BY.
    • Позволяет СУБД не обращаться к табличным данным, что ускоряет выполнение запроса.
  9. Functional (функциональный/индекс по выражению):

    • Индекс, построенный на результате функции或выражения над одним или несколькими столбцами.
    • Позволяет индексировать вычисляемые значения.

При выборе типа индекса учитывается тип данных, частота и характер запросов (поиск по точному значению, диапазону, сортировка, полнотекстовый поиск и т.д.) и кардинальность столбца.