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 :- 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.
-
Les index bitmap sont une variante d'index plus spécialisée :
- Ils codent les valeurs indexées sous forme de bitmaps et sont donc très économes en espace.
- Elles ont tendance à mieux fonctionner lorsqu'il y a peu de valeurs indexées distinctes
- 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.
- 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.
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.
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.