インデックスが使用されないケース

ORACLE SQLでインデックス(索引)を作成しても利用されない場合をいくつか紹介します。

下記のようなSELECT文が遅い場合は、抽出条件である「div_cd」にインデックスを作成した場合です。

◆SELECT文の例

select
  *
from
  table1 a
where
  a.div_cd = ‘100’
;

◆インデックスの例

CREATE INDEX table1_idx0
  ON test01.table1(div_cd) TABLESPACE index_tbs;

使用されないケース

LIKEの中間一致

select
  *
from
  table1 a
where
  a.div_cd like ‘%20%’
;

LIKEの後方一致

select
  *
from
  table1 a
where
  a.div_cd like ‘%50’
;

!=の使用

select
  *
from
  table1 a
where
  a.div_cd != ‘150’
;

<>の使用

select
  *
from
  table1 a
where
  a.div_cd != ‘150’
;

Oracle SQLチューニング パフォーマンス改善と事前対策に役立つ (DB selection) [ 加藤祥平 ]

価格:2,808円
(2018/11/19 19:23時点)

インデックスが使用されないケース” に対して1件のコメントがあります。

この投稿はコメントできません。