0

私はSQLServer2005の初心者であり、オンラインチュートリアルから学んでいます。ここに、私の質問の一部を示します。

1:[XYZから*を選択]と[XYZからすべて*を選択]の違いは何ですか。

2:クラスター化インデックスの目的は、テーブルを物理的にソートすることで検索を容易にすることです[私が知る限り:-)]。テーブルにプライマリ列がある場合、テーブルにクラスター化インデックスを作成するのが適切であるとしましょう。ソートされた列がすでにあるためです。

3:テーブルに1つのクラスター化インデックス+249の非クラスター化インデックス=250のインデックスを作成できるのはなぜですか?1つのクラスター化されたインデックスの要件を理解しています。しかし、なぜ249 ?? なぜ249以下ですか?

4

2 に答える 2

0
  1. SELECT ALLデフォルトとは対照的に、違いはありませんSELECT DISTINCT

  2. 意見はさまざまです。パフォーマンス上の理由から、クラスター化インデックスは、理想的には小さく、安定していて、一意であり、単調に増加する必要があります。主キーも安定していて一意である必要があるため、そこに明らかに適合します。ただし、クラスター化インデックスは範囲クエリに適しています。PKがクラスター化されていない場合、PKによる個々のレコードの検索はうまく機能する可能性があるため、一部の作成者は、PKのクラスター化されたインデックスを「無駄にしない」ことを提案しています。

  3. SQL Server 2008では、テーブル上に最大999個のNCIを作成できます。私はこれまでそうすることを想像することはできませんが、「フィルターされたインデックス」で潜在的に制限が引き上げられたと思います。インデックスはデータ変更操作にコストを追加しますが、変更は複数の場所に伝播する必要があるため、クラスター化されていない、フィルター処理されていないインデックスの2桁を達成するデータベースは、主に読み取り専用(レポートなど)にすぎないと思います。

于 2010-11-22T10:58:55.117 に答える
0

3の場合:

テーブルにレコードを挿入/削除するたびに、すべてのインデックスを更新する必要があります。インデックスが多すぎると、時間がかかりすぎます。

テーブルに5〜6を超えるインデックスがある場合は、時間をかけて自分で確認する必要があると思います。

于 2010-11-22T11:02:47.257 に答える