Dienstag, September 03, 2013

B*Tree und Bitmap Index-Mischung

Jonathan Lewis zeigt, wie man mit kleineren Tricks Index-Partitionen erzeugen kann, die einen "gemischten" Index simulieren, der für aktuelle Partitionen als B*Tree und für historische Partitionen als Bitmap Index erzeugt wird. Der Trick liegt darin, zwei Indizes zu erzeugen, von denen der eine nur den erforderlichen Wert indiziert und der andere zusätzlich einen NULL-Wert enthält (um ihn vom ersten Index zu unterscheiden). Initial werden beide Indizes als unusable definiert und dann baut man jeweils nur die gewünschten Partitionen auf. Durch das (vermutlich) seit 11.2 verfügbare Table Expansion Feature ist der CBO dann dazu in der Lage die Zugriffe auf die beiden Indizes über UNION ALL zu verknüpfen (sofern der skip_unusable_indexes Parameter auf true gesetzt ist, was aber seit 10g default ist). Das ganze wirkt ein wenig wacklig, könnte aber in entsprechenden Situationen sehr effektiv sein.

Keine Kommentare:

Kommentar veröffentlichen