Oracle実行プランのAccess述語とFilter述語の違いは何ですか?私が正しく理解していれば、「アクセス」はどのデータブロックを読み取る必要があるかを決定するために使用され、「フィルター」はブロックが読み取られた後に適用されます。したがって、フィルタリングは「悪」です。
以下の実行プランの述語情報セクションの例では、次のようになります。
10 - access("DOMAIN_CODE"='BLCOLLSTS' AND "CURRENT_VERSION_IND"='Y')
filter("CURRENT_VERSION_IND"='Y')
アクセスセクションとフィルターセクションの両方で「CURRENT_VERSION_IND」が繰り返されるのはなぜですか?
対応する操作は、フィールド(DOMAIN_CODE、CODE_VALUE、CURRENT_VERSION_IND、DECODE_DISPLAY)で定義されているインデックスのINDEXRANGEスキャンです。
私の推測では、CURRENT_VERSION_INDはインデックスの2番目の列ではないため、OracleはAccessステージでは使用できません。したがって、DOMAIN_CODE列でインデックスにアクセスし、すべてのブロックをフェッチしてから、CURRENT_VERSION_INDでフィルタリングします。私は正しいですか?