Bツリーを破棄してテーブルから直接データにアクセスできないのはなぜですか?(ほとんどの場合、テーブルを行ごとにスキャンすることにより)、アクセスできないデータよりも適切でしょうか?
あなたの質問に答えるために、インデックス作成の基本がより便利になります-インデックスは、Bツリー構造で編成された一連のページ(インデックスノード)で構成されます。この構造は本質的に階層型であり、ルートノードが階層の最上部にあり、リーフノードが最下部にあります。詳細については、こちらを参照してください。
また、多くの人が説明したように、クラスター化インデックス== 1つ以上のキーまたは列で物理的に順序付けされた元のテーブル。そのため、クラスター化インデックスが無効になっていると、そのデータ行にアクセスできません。データを挿入することもできません(非クラスター化インデックスの場合、挿入は成功しますが、これは完全にこの投稿に関連しているわけではありません-ここではクラスター化インデックスについての議論なので)。また、どちらの再編成操作も機能しません。
以下で詳しく説明します。
Adventureworksデータベースを使用して、CLUSTEREDインデックスを無効にした場合の影響を確認します。
次に、テーブルの行数を確認します。
クラスタ化インデックスを無効にします
次に、テーブルから行数を選択します。今回は以下のメッセージでエラーになります:
再編成操作でも動作しません!!
クラスタ化インデックスを再構築すると、正常に機能するはずです。
テーブルを選択して、データにアクセスできるかどうかを確認します
つまり、クラスター化インデックスを無効にすると、テーブル内のデータは引き続き存在しますが、DropまたはREBUILD操作以外ではアクセスできなくなります。関連するすべての非クラスター化インデックスとビューは使用できなくなり、テーブルを参照している外部キーも無効になり、テーブルを参照しているすべてのクエリのFAILUREがリードされます。
注:インデックスを有効にするオプションはありません。あなたはそれを再構築する必要があります。