Подтвердить что ты не робот

Индексы базы данных B-Tree vs Bitmap

Может ли кто-нибудь объяснить разницу между индексами bitmap и b tree. в каких ситуациях вы будете использовать оба эти? Каковы преимущества/недостатки каждого.

4b9b3361

Ответ 1

Из wikipedia: B-Trees и растровые индексы. Варианты использования:

  • B-Trees - это типичный тип индекса, используемый при выполнении CREATE INDEX ... в базе данных:

    • Они очень быстрые, когда вы выбираете только очень небольшое подмножество данных индекса (обычно 5% -10% max)
  • Они работают лучше, когда у вас много различных индексированных значений.
  • Сочетание нескольких индексов B-Tree может быть выполнено, но более простые подходы часто более эффективны.
  • Они не полезны, когда для индексированных данных имеется несколько разных значений или когда вы хотите получить большой ( > 10%) набор подмножеств данных.
  • Каждый индекс B-Tree накладывает небольшой штраф при вставке/обновлении значений в индексированной таблице. Это может быть проблемой, если у вас много индексов в очень загруженной таблице.


Эти характеристики делают индексы B-Tree очень полезными для ускорения поиска в OLTP-приложениях, когда вы работаете с очень маленькими наборами данных за раз, большинство запросов фильтруют по ID, и вам нужна хорошая параллельная производительность.

Индексы растровых изображений являются более специализированным вариантом индекса:

  • Они кодируют индексированные значения в виде растровых изображений и поэтому очень эффективны в пространстве.
  • Они имеют тенденцию работать лучше, когда имеется несколько отдельных индексированных значений.
  • Оптимизаторы DB могут очень легко комбинировать несколько растровых изображений, что позволяет эффективно выполнять сложные фильтры в запросах.
  • Они очень неэффективны при вставке/обновлении значений.


Индексы растровых изображений в основном используются в приложениях хранилища данных, где база данных считывается только за исключением процессов ETL, и вам обычно нужно выполнять сложные запросы по схеме звезды, где индексы растровых изображений могут ускорить фильтрацию на основе условий в ваших таблицах измерений, которые обычно не имеют слишком большого количества различных значений.

В качестве очень короткого резюме: используйте индексы B-Tree (индекс "по умолчанию" в большинстве баз данных), если вы не являетесь разработчиком хранилища данных и не знаете, что вы выиграете для растрового индекса.