1

複合インデックスを作成しています。

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 のインデックスに入れられます。これにより、インデックスが非常にコンパクトで高速になります。

4

2 に答える 2