2017-11-23 15 views
0

今まで私が理解してきたのは、データベースのデータは実際にはファイルのブロックでハードディスクに格納され、インデックスは実際にデータがあるファイルのブロックを指しています保存される。"インデックスファイル"で検索キーを検索する方法

さて、私は疑問に思ってすると、検索キーがインデックスファイルで検索されたか、私のクエリはselect empname from employee where empid = 12345であると私は、私は「インデックスファイルは」すべて含まれていることだと思うそして何empidにインデックスがあるとしていることです従業員のIDです。どのようにしてempid 12345が順番に検索されるのでしょうか?

+0

、テーブルデータとインデックスデータが格納され、すべての表領域に格納されたセグメントに格納されたブロックに格納されていると言うこともう少し正確であろうディスクに格納されているデータ・ファイルに格納されます。 –

答えて

0

インデックスは、実際にデータが格納されているファイルのブロックを指します。 。

非クラスタインデックスポイントデータが実際

に格納されている場所へのインデックスの2種類があります

  • クラスタ化インデックス - 行が物理的に格納されていますディスク の順序でインデックスに指定します。
  • クラスタ化されていないインデックス - データ が格納されているデータページへの参照。

表には1つのクラスタード・インデックスしか存在できません(データは一方向のみに物理的に格納できるため)。クラスター化されていない索引を多数持つことができます。

あなたが呼ばれて説明したインデックスを使用してデータを見つけるプロセスは、インデックスがその下にあなたの例に類似している図を考えてみましょう

を求めるインデックスはで開始します模索

enter image description here

ルートノード(図のレベル2)12345という例を見つけるには、探している値がその値の範囲に入るため、ツリーの左の枝を経由してレベル1に移動しなければなりません。

レベル0で私たちの値を見つけるために複数のリーフノードを持っています(図は簡略化のため3つを示していますが、数百もあります)。その範囲内の各値を検索し、それが12345であるかどうかを調べます。

次に、インデックスはクラスタ化インデックスかどうかによって異なります。値を取得します。クラスタ化されていないインデックスの場合は、参照するデータページに移動して値を取得します。オラクル側で

Example diagram taken from here

関連する問題