どのように定期的かつ複合インデックスはのRDBで実装されていますか?
-
16-09-2019 - |
質問
MySQLやOracleなどのデータベースでは、どのようにインデックスが実装されていますか?私は、通常のインデックスはBツリーとして格納されていると思いますが、その複数の列にインデックス複合インデックスについては何も見つけることができませんでした。私は、私はそれらを研究することができますので、使用されるデータ構造の名前を探しています。
より一般的には、どこで、データベースの実装の詳細についての詳細な情報を見つけることができますか?私は大学でずっと後でその上のコースを受講するつもりですが、私は今興味があります。
解決
複合インデックスはまた、彼らは単にキーを決定するためにインデックス付き列を連結し、Bツリーを使用します。側ノードとして、Oracleはまた、他のインデックス・タイプ、すなわちビットマップ索引を知っています。しかし、それは、索引付けされた列の数に依存しません。
他のヒント
Bツリー。すべてのインデックスはBツリーとして格納されている - 。でも、コンポジットもの。
あなたはインデックスが編成されている方法の詳細な研究を行うために探している場合は、、B +木とB *ツリーに見えます。 SQL Serverの場合、カレン・ディレイニーの内部のSQL Server:ストレージエンジンには優れていますそのインデックスの編成を含め、SQL Serverののナットとボルトについての本。だから、あなたは間違いなくそれをチェックアウトする必要があります。
コメンターは、Oracleが非常に異なるB-木より構成されているビットマップ索引を使用することができますが、それらはほとんど従来のリレーショナルデータベースに使用されていないことを指摘する - 彼らはOLAPタイプのアプリケーションのためにと場合により頻繁に使用されている場所あなたデータの非選択グループの高速アクセスを必要とします。
EDIT:SQL Serverは、例えば、今 Columnstoreインデックス。あなたが大規模なBIタイプのワークロードを持つすべての作業を行う場合、それらはBツリーとは全く異なる方法でデータを保存するよう、それは、間違いなく、これらを見て価値があります。
SQL Serverはまた、メモリ最適化されたテーブルのために今、別のメカニズムを使用しています。だけでなく、およびOLTPタイプのクエリのために非常に便利だものです。