2011-12-15 15 views
3

私は、結合中の全テーブルスキャンを防ぐために、私は私の外出先のアプリケーションの外字キーにインデックスを追加する必要があることを知りました。しかし、私は外部キーにインデックスを追加することが何を意味するのか、それがどのように機能するのか、それがパフォーマンスをどのように向上させるのかを正確には分かりません。外部キーのインデックスの追加はどのように機能しますか?

答えて

2

私はウィキペディアには、どのようなインデックスがあるのか​​をよく分かりました。参照:http://en.wikipedia.org/wiki/Index_%28database%29

インデックスは、データベースのサイズを増やすことができます。彼らは効果的にデータの注文をキャッシュします。外部キー関係に関してインデックスを作成するときは、テーブルのデフォルトの順序付けをキャッシュします。これにより、テーブル内で検索する必要のあるアイテムのサイズを縮小したり、結合を高速化できます。

この不自然な例考えてみましょう:私は、従業員と呼ばれるテーブル持って

を:

従業員IDを|従業員コード|従業員名

1 | 0003 |リチャード
2 | 0002 | Bob
3 | 0008 |ティム

私は、従業員コードのソートされたリストに参加したい:

これは、あなたがO(N2)の検索の効率を持つインデックスなしを意味します。従業員コードで注文されたテーブルでは、バイナリ検索ツリーによって与えられる検索効率:http://en.wikipedia.org/wiki/Binary_search_algorithmを見ることができます。効果的には、位置を推測し、すべての単一行を検索するのではなく、それを永遠に近づけることによって、0003を見つけることができます。

あなたのデータベースは特定のアルゴリズムを使用していますが、より効率的な検索を行うためには、キーによるデータの順序付けを必要とするアルゴリズムがあります。

データベースのサイズに影響するため、不要になったインデックスも削除することをお勧めします。

0

他のフィールドのインデックスと変わりません。オプティマイザは、これらの表の特定の行を見つけるのに役立ちます。 FKはしばしば結合フィールドとして使用されるため、これらのケースでは索引作成のための自然な候補となります。

関連する問題