クラスタ化インデックスおよび非クラスタ化インデックスについて読んで、非クラスタ化インデックスにはHashing for Clustered IndexおよびB + tree(またはB Tree)を使用します。私の結論は正しいのでしょうか?そうでない場合、データ構造レベルでのこれら2つの違いは何ですか?クラスタ化されたインデックスおよび非クラスタ化インデックスで使用されるデータ構造
答えて
簡単に言えば、以下のように説明することができます。
クラスタ化と非クラスタ化インデックスの両方が、質問は、MySQLに焦点を当てているように見えたときに、この答えが書かれた
for clustered index leaf node of the b-tree structure contains the Actual data.
for non clustered index leaf node of the b-tree structure points the address of the actual data.
、Bツリー構造に従います。
[mysql]という質問にタグが付いているので、 RDBMSで議論を制限する必要があります。
最近、主に使用しているはずの「エンジン」はInnoDBです。主にB +ツリー索引があります。 (それにはFULLTEXT
とSPATIAL
もありますが、私はそれらに入ることはありません)ではなく、に "ハッシュ"があります。
PRIMARY KEY
は、クラスタ化されたB +ツリーです。すべてのデータはPKによって順序付けられ、その1つのB +ツリーに格納されます。 PKはクラスタ化することしかできず、BTreeにしかなりません。 PKもUnique(MySQLで)です。
セカンダリキーもB +ツリーです。セカンダリインデックスの列が含まれています。リーフノードには、主キーの列があります。セカンダリインデックスを使用した「ポイントクエリ」は、セカンダリインデックスツリーをドリルダウンし、プライマリキーをドリルダウンする必要があります。二次キーは「クラスタ化」できません。
一般的な用途では、BTreeが最適です。ハッシュはそれほど優れていることはめったにありません。ハッシュはレンジスキャンには役に立たず、BTree、特にB +ツリーはそのようなものには優れています。
インデックスがRAMにキャッシュできるよりも大きい場合、ハッシュはひどいです。通常、アクセスしたい「次の」キーは、最後にタッチしたキーに隣接していないので、I/Oが必要になる可能性があります。
基本的にはインタビューの質問だったので、クラスタリングされたインデックスと非クラスタ化されたインデックスでハッシュとBツリーがどこに使われているのかが尋ねられました。私はそれに対して何を返すべきですか? –
です。 MySQLだけのポジションであれば問題はナンセンスです。あなたの最善の答えは、あなたが思うよりもMySQLについて知っている(丁寧に)ことです。その位置が他のエンジン(MSSql、Oracle、Postgresなど)に関係する場合は、探している答えを教えてくれませんでした。つまり、 "クラスタ化インデックス"、 "ハッシュ"、 "BTree" (そしておそらく "B + Tree")、 "プライマリ" vs "セカンダリ"、 "ユニーク"などがあります。これらの用語は、ほぼ直交しています。 –
レスポンスありがとうございますが、一般的なケース(MSSql、Oracle、Postgresなどを含む)については、解決策を教えてください –
- 1. クラスタ化Columnstoreインデックス内部データ構造
- 2. クラスタ化または非クラスタ化インデックス
- 3. クラスタ化されたインデックスとクラスタ化されていないインデックスのパフォーマンスの差
- 4. SQL Server 2000インデックス - クラスタ化と非クラスタ化
- 5. 非クラスタ化インデックスと非クラスタ化ColumnStoreインデックスの相違点
- 6. クラスタ化されたインデックスからの列を非クラスタ化することに?
- 7. クラスタ化インデックスと非クラスタ化インデックスの違いは何ですか?
- 8. SQL Serverの一意の識別子列にクラスタ化された/非クラスタ化インデックス
- 9. SQL Serverテーブル内のクラスタ化インデックスと非クラスタ化インデックス
- 10. クラスタ化されたインデックス列の非クラスタ化インデックスはパフォーマンスを向上させますか?
- 11. クラスタ化されたphpとpostgresqlで使用する検索インデックス
- 12. 非クラスタ化インデックス/ CXPACKET待機
- 13. コンポジット非クラスタ化インデックスと非クラスタ化インデックスの違い - インデックスツリーアーキテクチャの相違
- 14. 主キー&クラスタ化インデックス
- 15. クラスタ化インデックスSQL Server
- 16. クラスタ化インデックスとインデックスシーク
- 17. クラスタ化されたColumnstoreインデックスの断片化 - インデックスのプロパティとdm_db_column_store_row_group_physical_statsの相違点
- 18. クラスタ化インデックスまたはクラスタ化インデックスなしでテーブルにレコードを挿入
- 19. 非ユニーク列のSQL Serverクラスタ化インデックス
- 20. SQL Serverのユニークキークラスタ化または非クラスタ化インデックスですか?
- 21. SQL Azureの切り替えクラスタ型と非クラスタ化インデックス
- 22. MySQL:クラスタ化された場所(論理インデックス)
- 23. SQL Server Standard Editionのクラスタ化されたColumnStoreインデックス
- 24. 非クラスタ化インデックスのパフォーマンスを向上させるシーク
- 25. traefikリバースプロキシを使用した永続的およびクラスタ化された接続
- 26. クラスタ化インデックスを持つファイルテーブル
- 27. 最適クラスタ化インデックスが
- 28. クラスタ化インデックスの理解
- 29. メッセージのクラスタ化された使用
- 30. Djangoによるクラスタ化インデックスの選択
だから、いつハッシュを使用するのですか? –
ハッシングは、より大きいサイズの文字列に対して短い固定長キーを生成します。ハッシュについてもっと知りたければ、次のリンクから記事を読んでください。http://mobile.databasejournal.com/features/mssql/getting-started-with- hashing-in-sql-server.html –
@UnnikrishnanR - そのリンクは、MySQLではなくMSSqlに関する話です。 –