私の知識が限られているので、この質問は奇妙かもしれません。ORACLE - インデックスはどのようにコストに関連していますか
私は何百万ものレコードを含むデータベースを最適化しようとしていますが、パフォーマンスがあるときは分かりません。私はSQL Developerの 'Explain plan'で遊んでいましたが、実際にはそれほど意味がありません。
ID | Creation_date | End_date | Critical_date | Flag
私はこのように見て、このテーブルにクエリを実行実行します:
は例えば、私は、次の列を持つテーブルを持っ
SELECT COUNT(ID) FROM TABLE
WHERE FLAG = 1
Creation_date < :p_d_one
End_date > : p_d_two
Critical_date < :p_d_three
これには、私の64のコストを与えますインデックスを追加することにしました。
今、私は理解していない事は、私がCREATION_DATEのインデックスを作成するときに、コストが大幅に低下することがある - >(64 - > 9)
CREATE INDEX TABLE_INDEX_CREATION_DATE ON TABLE (Creation_date desc)
が、私は作成して、他のフィールドのインデックス(たとえ日付であっても)少し変化しません。
私のインデックスにそれを含める価値があるのであれば、 コストに影響がない場合でも、他のクエリのインデックスを作成する必要がありますか? データベースからのライブ統計を使用してコストを計算していますか(カーディナリティ、...)?
あなたの答えは、エリック、私は私のインデックスにすべてのフィールドを含めることができます。 コストが変わらないクエリについては、新しいインデックスを作成する価値があると思いますか(テーブルにリンクされた多くのインデックスには良いとは言えません)。 – Moufett
また、インデックスを作成すると他のプロセスが遅くなるので、できればそれらを避けることはできません。 – Moufett
実際、最初の索引はデータへの最適なアクセス・パスです。索引を増やすと、問合せのパフォーマンスが向上しません。また、索引を増やすと、DML文のコストが高くなります。 –