2011-03-23 22 views
1

クラスタ化インデックスを作成するときCIX_FirstNames列に、たとえばFirstNamesの場合、実際にSQL Serverで内部的に何が起こるのですか?SQL Serverのインデックス、内部作業およびインデックスの構造

私はクラスタ化されたインデックスを読んでデータのコピーを作成しています。

ので、ないSQL Serverは、新しいインデックステーブルを作成INDEXTABLE、コピーテーブルからすべてのFirstNames INDEXTABLEに、そしてファーストネームを検索する場合、それはインデックステーブルからそれを表示しますか?

これはクラスタード・インデックスの実際の作業ですか?

+1

あなたは**絶対に必要* *この偉大なイントロ記事[SQL Server Index Basics](http://www.simple-talk.com/sql/learn-sql-server/sql-server-index-basics/)を学ぶために - インデックス構造とそれらを視覚化するための図を示しています。 –

答えて

2

これは、迅速な答えに、ここで処理する方法あまりにも大きな話題である - あなたは自分自身を取得する必要があります。

Microsoft SQL Server 2008 Internals

enter image description here

すべての非常に詳細でこれをカバーします。

ただ簡単に:NO!クラスタ化インデックスを作成する場合NOT重複するデータ!あなたはどこからそれを手に入れましたか?

クラスタ化インデックスはデータを(キーに従って)並べ替え、クラスタ化インデックスのリーフレベルのノードはデータページですが、それらは一度だけ存在します。

興味のあるいくつかのより多くの資源:

+0

クラスタ化されていないインデックスが作成されたときに作成されたデータのコピーも同様ですか? – sqlchild

+0

@marc_s:しかし、クラスタード・インデックスでは、SQLはデータを取得するためにテーブルに行く必要はありません。 インデックス自体から取得します。したがって、データのコピーがインデックスにない場合、どのように表示されますか?データはテーブルに行くことなく? – sqlchild

+0

テーブルが作成され、データが挿入されると、データはデータページに格納され、前述のように、CIのリーフレベルノードはデータページなので、データページはデータが挿入されるページです。 – sqlchild