2017-05-19 13 views
7

現在、Oracleで索引を学習中です。オラクルdocumentationで は、以下を見つけることができます。データベースが明示的に推奨されるように列に索引を作成し、整合性制約付きの列にあなたのためのインデックスを作成し主キー制約または一意キー制約がすでに存在する列での索引の作成

が。

ここに誰でも私にこの背後にある根拠を教えてもらえますか? データベースが自動的に索引を作成する場合、これらの列に別の索引を明示的に作成するのはなぜですか?

+0

良い質問です。私はその文章では「推奨しない」と思います。おそらくOracleは索引を作成するのは1回だけであり、整合性制約が変更された場合に推奨されます。 –

+1

@ GordonLinoff - 制約が変更されたときにインデックスを保持するのがよい理由です。しかし、その目的のために、Oracleは制約を無効にするときに 'KEEP INDEX'オプションを持っています。 – mathguy

答えて

1

少なくとも、インデックスを明示的に作成する場合は、意味のある名前を付けることができます。名前で索引を参照する必要がある場合は、人間が読める形式になります。

USING INDEX節に、制約を作成している明示的なインデックスWHILEを作成できることに注意してください。ドキュメントにはいくつかの例があります:https://docs.oracle.com/cd/B28359_01/server.111/b28310/indexes003.htm#ADMIN11725

1

私が持っている唯一のアイデアは、SYS%として生成されたか、または制約名から継承する名前がいくつかあります。インデックスの命名規則を維持する方が良いでしょう。

+0

他の違いがあります。明示的なインデックス作成でストレージなどを制御できます。システムがあなたのためにそれをするときはそうではありません。 – mathguy

関連する問題