SQL Server(2008 R2エディションをテストしましたが、これは以前のバージョンでも機能するようです)で、主キー(したがってクラスター化されたインデックス)が定義されていないテーブルにデータを挿入できることを知って驚きました。
これらのテーブルのデータはどのように可能であり、データはどのように物理的に保存されますか?
SQL Server(2008 R2エディションをテストしましたが、これは以前のバージョンでも機能するようです)で、主キー(したがってクラスター化されたインデックス)が定義されていないテーブルにデータを挿入できることを知って驚きました。
これらのテーブルのデータはどのように可能であり、データはどのように物理的に保存されますか?
ここに役立つリンク:
Q:クラスター化されたインデックスは「データ」であると聞きましたが、それが何を意味するのか完全には理解していません。クラスタ化されたインデックスを削除すると、データが失われますか?
A:私はこの質問をよく聞かれますが、インデックス構造は人々を混乱させる傾向があることがわかりました。インデックスは不思議に思え、その結果、意図せずに非常に複雑であると考えられています。テーブルは、クラスター化インデックスの有無にかかわらず内部に格納できます。テーブルにクラスター化されたインデックスがない場合、それはヒープと呼ばれます。テーブルにクラスター化インデックスがある場合、それはクラスター化テーブルと呼ばれることがよくあります。クラスター化インデックスが作成されると、SQL Serverは一時的にデータを複製してヒープからクラスター化インデックスキーの順序に並べ替え(キーがデータの順序を定義するため)、ヒープに関連付けられている元のページを削除します。この時点から、SQL Serverは、二重にリンクされたリストと、データ内の特定のポイントに移動するために使用されるB+ツリーを通じて論理的に順序を維持します。