複合インデックスを作成しています。
create index I on TEST (A,B);
そして、私のクエリは次のようなものです
select * from TEST where A=:1 and B IS NOT NULL
上記のクエリでは数行 (< 10) しか返されませんが、先頭の列 "A" はあまり一意ではなく、値に対して 50 万件のレコードを返すことができます。
上記のクエリを実行すると、値 A=:1 ですべてのブロックをスキャンするため、論理読み取りが多すぎます。
部分的なデータだけにインデックスを付けるためのトリック/回避策はありますか? たとえば、そのデータのみが B IS NOT NULL のインデックスに入れられます。これにより、インデックスが非常にコンパクトで高速になります。