2012-02-13 3 views
19

私はOracle上で開発中です。私はFOREIGN KEY制約を定義したいくつかのテーブルを持っています。私はすでに配向このSQL ServerこのMySQL配向質問を読みましたが、私は、Oracleについて何を見つけることができませんでした。OracleはFOREIGN KEY列の2次索引を自動的に作成しますか?

質問は常に同じです。クエリのパフォーマンスを最適化するために、FOREIGN KEY制約を作成する列に対して、明示的な2次インデックスを作成する必要がありますか? Oracleは自動的にFOREIGN KEYED列の索引を作成して、JOINの間のパフォーマンスを向上させませんか?

私は通常、WHERE句は、それらの列と比較するクエリを実行します。

+1

いいえ、それはしていません。たとえば、[this](http://stackoverflow.com/questions/4127206/do-i-need-to-create-indexes-on-foreign-keys)を参照してください。 –

答えて

18

いいえ、Oracleは自動的にも、あなたはおそらくべき例は99%でも、外部キー列に索引を作成しません。索引では、問合せの支援以外にも、親表の削除文のパフォーマンスが向上します。

+1

このようなインデックスにはコストがかかりますが、インデックスを作成しないのが最善です。個人的には、デフォルトでそれらを作成し、必要に応じて削除する必要があると思われますが、Oracleは唯一のDBとはまったく同じ動作をしていません。 PostgreSQLは、外部キー関係の参照側のインデックスも自動的に作成しません。 –

関連する問題