1

次の SQL クエリがあり、より高速に動作するように最適化したいと考えています。

select dv.Id, dv.Version, cvco.Time
from DVPST dvps  -- cca. 10 000 entries
  inner join DVPCT dvpc ON dvps.Value = dvpc.Value 
  inner join DVPT dvp on dvpc.Id = dvp.Id
  inner join DVT dv on dvp.Id = dv.Id 
  inner join CVCOT cvco ON dv.Id = cvco.Id 
  inner join DT doc on doc.Id = dv.Id
where dvps.ValueStr in ("value1", "value2", ..., "value1000")

実行計画は正しいインデックスを使用してすべてを評価しますが、それでも時間がかかります。where 条件は、DVPCT テーブルからすべてのエントリをフィルタリングする必要があるため、ほとんどの場合、これだけが評価されます。

select dv.Id, dv.Version, cvco.Time
from DVPST dvps
where dvps.ValueStr in ("value1", "value2", ..., "value10000")

そこに結合するものが何もないのに、クエリがまだ結合を実行するのはなぜですか。

アイデアをありがとう、マレク

4

1 に答える 1