2016-04-20 7 views
0

1 /テーブルの中で、はどのようにindex I2 on T(col2, col1)と異なるでしょうか?両方を作成できますか?たとえば、Unique Indexとします。(col1、col2)のインデックスと(col2、col1)のインデックス

Index Skip Scanningは、列の順序が重要であると指示しているようであり、おそらくI1はI2とは異なることを意味します。別のテキストで

は、私がUnique constraints (col1, col2)(col2, col1)の両方が同じindex (col1, col2)を使用している意味

CREATE TABLE INVOICES 
(ID NUMBER(11), 
INVOICE_DATE DATE, 
CONSTRAINT UN_ID UNIQUE(ID, DATE) USING INDEX(CREATE INDEX I_INVOICES ON INVOICES(ID, INVOICE_DATE)), 
CONSTRAINT UN_DATE UNIQUE(DATE, ID) USING INDEX I_INVOICES); 

を見てきました。

皆様からの洞察はありますか?私の質問はではない私たちは別のものを選ぶと?

ただし、それらが共存するとき2つの異なるインデックス/オブジェクトですか?秩序は問題ですか?なぜ、この例では両方に対して同じインデックスを使用しますか?注文が関係するので、(col1、col2)以外の別のインデックス(col2、col1)を作成する方が良いでしょうか?

2 /私たちはなぜCREATE INDEXで、CREATE UNIQUE INDEXではないのですか?この場合、CREATE UNIQUE INDEXを使用しますか?複合インデックスのための

+0

に一意のキーを作成している場合は、それがどのように使われるかを知っている必要があります。だから知っておく必要があります:1.どのクエリがあなたのテーブルに対して実行されますか? 2.データのカーディナリティと、より大きい/より小さい基数を持つ列。 'col1'や' col2'の正規/圧縮インデックス、 '(col1、col2)'や '(col2、col1)の' '一意なインデックス 'など、必要なインデックスを決めることができます。 ' – MaxU

答えて

0

注文キーは

複合インデックスのキーを注文するため、次のガイドラインに従います。キーは句が主要な部分を構成するWHEREで使用されるよう

は、インデックスを作成します。 一部のキーがWHERE節で頻繁に使用される場合は、より頻繁に選択されるキーが先頭部分を構成し、これらのキーのみを使用するステートメントで索引を使用できるように索引を作成するようにしてください。 すべてのキーがWHERE句で等しく頻繁に使用される場合、CREATE INDEX文でこれらのキーを最も選択性の高い順に並べると、問合せのパフォーマンスが向上します。 すべてのキーがWHERE節で等しく頻繁に使用されていても、キーの1つでデータが物理的に順序付けされている場合は、まずそのキーをコンポジットインデックスに配置します。

から:なぜ我々だけUNIQUE INDEXをCREATE INDEXをCREATEしていない使用している:同じ質問でhttps://docs.oracle.com/cd/B10501_01/server.920/a96533/data_acc.htm#2174

2 /?この場合、CREATE UNIQUE INDEXを使用しますか?

これは、インデックス付き列の値の組み合わせが一意でなければならないことを示します。

http://www.techonthenet.com/oracle/indexes.php

はそれを心を保つ:あなたはすべてのインデックスを作成する前に、テーブル、一意のインデックスが自動的に作成されますあまりにも

関連する問題