のために、私は(SWcode,cdcardno)
インデックスが句が二列
にインデックスを作成する場所での2値のスキャンをスキップして、私はこのクエリを実行します。
SELECT cd.*
FROM KS cd
where cd.cdcardno in ('6219862012953805')
ORDER BY cd.ROWID
とOracleの使用インデックススキャンをスキップし、それは本当です。このクエリを実行すると:
SELECT cd.*
FROM KS cd
where cd.cdcardno in ('6219861009150391','6219862012953805')
ORDER BY cd.ROWID
oracle useフルスキャン。私は理由を理解できない。
スキップ・スキャンは、索引に2つ以上のフィールドがあり、1つ以上のフィールドを「スキップ」し、索引ツリーの下のフィールドから索引を「スキャン」する場合に選択できます。ヒストグラムやデータの分布に関しては、WHERE句でフィールドを1つだけ選択すると、スキップスキャンが必要なのは当然です。 – sandman