Oracle
 sql >> Base de données >  >> RDS >> Oracle

Index de base de données B-Tree vs Bitmap

De wikipedia :B-Trees et index bitmap . Les cas d'utilisation :

  • Les arbres B sont le type d'index typique utilisé lorsque vous faites CREATE INDEX ... dans une base de données :

    1. Ils sont très rapides lorsque vous ne sélectionnez qu'un tout petit sous-ensemble des données d'index (5 % à 10 % maximum en général)
  • Elles fonctionnent mieux lorsque vous disposez d'un grand nombre de valeurs indexées distinctes.
  • Combiner plusieurs index B-Tree peut être fait, mais des approches plus simples sont souvent plus efficaces.
  • Ils ne sont pas utiles lorsqu'il existe peu de valeurs distinctes pour les données indexées ou lorsque vous souhaitez obtenir un sous-ensemble important (> 10 % généralement) des données.
  • Chaque index B-Tree impose une petite pénalité lors de l'insertion/mise à jour des valeurs sur la table indexée. Cela peut être un problème si vous avez beaucoup d'index dans une table très occupée.

  • Ces caractéristiques rendent les index B-Tree très utiles pour accélérer les recherches dans les applications OLTP, lorsque vous travaillez avec de très petits ensembles de données à la fois, la plupart des requêtes sont filtrées par ID et que vous souhaitez de bonnes performances simultanées.

  • Les index bitmap sont une variante d'index plus spécialisée :

    1. Ils codent les valeurs indexées sous forme de bitmaps et sont donc très économes en espace.
    2. Elles ont tendance à mieux fonctionner lorsqu'il y a peu de valeurs indexées distinctes
    3. Les optimiseurs de base de données peuvent combiner plusieurs bitmaps indexés très facilement, ce qui permet une exécution efficace des filtres complexes dans les requêtes.
    4. Ils sont très inefficaces lors de l'insertion/de la mise à jour des valeurs.


    Les index bitmap sont principalement utilisés dans les applications d'entrepôt de données, où la base de données est en lecture seule, à l'exception des processus ETL, et vous devez généralement exécuter des requêtes complexes sur un schéma en étoile , où les index bitmap peuvent accélérer le filtrage en fonction des conditions de vos tables de dimensions, qui n'ont généralement pas trop de valeurs distinctes.

En bref :utilisez les index B-Tree (l'index "par défaut" dans la plupart des bases de données), sauf si vous êtes un développeur d'entrepôt de données et que vous savez vous bénéficierez d'un index bitmap.