次の 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")
そこに結合するものが何もないのに、クエリがまだ結合を実行するのはなぜですか。
アイデアをありがとう、マレク