2009-06-11 12 views

答えて

11

あなたが指定したとおりに主キーを持っている場合は、すでに少なくとも1つのインデックスがあります。これはおそらくクラスタ化されたインデックスであり、私はあなたが良いと思うことです。

2

ほとんどの場合、クラスター化されたインデックスはほとんどの場合、ほとんどの場合常に必要です。私はそう言って、先に進み、それらのインデックスを作成します。

テーブルのデータが期待通りにならない場合は、テーブルサイズの増加による影響を軽減するために、少なくとも単純なインデックス作成戦略を実行する必要があります。

+0

このような表のクラスタード・インデックスにはどのようなフィールファクターを使用しますか? –

+2

フィル係数は、実際に挿入と更新の性質に依存します。 たとえば、クラスタード・インデックスで定義された順序でレコードを挿入する傾向があり、更新をほとんどまたはまったく実行しない場合、高いフィル・ファクタが最適です(更新がない場合でも100%です)。このようにして、任意のフェッチに対して可能な限りいくつかのデータページをスキャンしています。 アウトオブオーダーの挿入がある表、または散発的な更新よりも多い場合は、より低い塗りつぶし率が保証されます。 –

+0

インデックスを頻繁に変更する必要がある場合はどうすればよいですか?クラスタリングはパフォーマンスを低下させませんか? – johnnycrash

1

プライマリキーを使用している場合は、既にクラスタ化インデックスが1つあります。

+0

プライマリキーをクラスタ化する必要はありません –

1

クラスタ化インデックスである主キーが必要です。しかし、索引の列以外では、4行から10行までの表は非常に小さいです。実際の表スキャンよりも索引を検索するためのコストがかかります。

ここで私を正直にしておいてください。SQL 2008の大規模な生産とレポート環境では、50k行未満のテーブルのインデックスを気にしません。

6

正解はです。問題はありません

テーブルが1つの8kデータページに収まるように十分小さい場合は、SQL Serverはその1ページを読み込み、必要なものを実行するために「テーブル全体」を使用できます。

クラスタ化インデックステーブル自体、あなたはクラスタ化インデックスを追加した場合、あなたが本当に任意のオーバーヘッドを追加していない、あなただけの単一のデータ・ページ内のソート優先度を指定している表が存在であります。

ノンクラスタード・インデックスは、別のオブジェクトであるため、決して使用されないため、スペースが無駄になります。 (クエリオプティマイザは、単一のデータページへのポインタしか持たないインデックスをロードすることは決してありません。データページを直接ロードするだけです)。

必ずプライマリキーがあることを確認してください。ただし、クラスタードインデックスも追加すると、テーブルが1ページを超えて大きく成長しない限り、それほど意味がありません。

+0

素晴らしい情報BradC。 +1 :) – wcm

0

私はこれに関してTaporiと一緒です。索引を追加すると不必要にオーバーヘッドが増加します。

関連する問題