アクティブなアクティブなエントリを持つテーブルがあり、アクティブの場合はアクティブ= 1、アクティブでない場合はアクティブ= 0です。Oracle:テーブルの行のサブセットへのインデックス付け
私はこのテーブルにさまざまなインデックスを持っていますが、アプリケーションはアクティブなデータに対してのみクエリを実行するため、アクティブなエントリにはインデックスが必要です。非アクティブなデータは再びアクティブになる可能性があるため保存する必要がありますが、通常はインデックスを使用しない一括更新でのみ行われます。
非アクティブなエントリ(アクティブなエントリよりもますます多くのものがあります)の索引付けにはかなりのスペースが必要です。
create index an_idx on tab (active, col1, col2, ... , coln) where active = 1
:
このような何かをするには、Oracle(10グラム)での方法はありますか?
前の試み:
私はそうのようなときactive = 0
nullに最初の列を設定する機能ベースのインデックスを使用してみました:
create index an_idx on tab (decode(active, 1, 1, null), col1, col2, ... , coln)
しかし、Oracleは、まだインデックスに非アクティブの列を思わこの場合。
スペースの節約があなたの目標である場合は、オプション2は、IMO理にかなって。 –