Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Índices de banco de dados B-Tree vs Bitmap


Da wikipedia:B-Trees e índices de bitmap . Os casos de uso:

  • B-Trees são o tipo de índice típico usado quando você faz CREATE INDEX ... em um banco de dados:
    1. Eles são muito rápidos quando você seleciona apenas um pequeno subconjunto dos dados do índice (máximo de 5% a 10% normalmente)
  • Eles funcionam melhor quando você tem muitos valores indexados distintos.
  • A combinação de vários índices B-Tree pode ser feita, mas abordagens mais simples costumam ser mais eficientes.
  • Eles não são úteis quando há poucos valores distintos para os dados indexados ou quando você deseja obter um subconjunto grande (> 10% normalmente) dos dados.
  • Cada índice B-Tree impõe uma pequena penalidade ao inserir/atualizar valores na tabela indexada. Isso pode ser um problema se você tiver muitos índices em uma tabela muito ocupada.


  • Essas características tornam os índices B-Tree muito úteis para acelerar pesquisas em aplicativos OLTP, quando você está trabalhando com conjuntos de dados muito pequenos por vez, a maioria das consultas filtra por ID e deseja um bom desempenho simultâneo.

  • Os índices de bitmap são uma variante de índice mais especializada:
    1. Eles codificam valores indexados como bitmaps e, portanto, são muito eficientes em termos de espaço.
    2. Eles tendem a funcionar melhor quando há poucos valores indexados distintos
    3. Os otimizadores de banco de dados podem combinar vários bitmaps indexados com muita facilidade, o que permite a execução eficiente de filtros complexos em consultas.
    4. Eles são muito ineficientes ao inserir/atualizar valores.


    Os índices de bitmap são usados ​​principalmente em aplicativos de data warehouse, onde o banco de dados é somente leitura, exceto para os processos ETL, e você geralmente precisa executar consultas complexas em um esquema em estrela , em que os índices de bitmap podem acelerar a filtragem com base nas condições em suas tabelas de dimensão, que geralmente não têm muitos valores distintos.

Como um breve resumo:use índices B-Tree (o índice "padrão" na maioria dos bancos de dados), a menos que você seja um desenvolvedor de data warehouse e saiba você se beneficiará de um índice de bitmap.