インデックスを置くことは意味を作る開始し、テーブルのサイズ
-
25-09-2019 - |
質問
私は2K程度の行でカレンダーテーブルを持っています。これは、ルックアップテーブルである、と多くの人が参加する中で使用されます。
列です。
CalendarId (PK, Clustered)
DateTimeValue
IsWeekDay
IsWeekend
IsHoliday
私の質問はこれです:私はDateTimeValueにインデックスを持っていると思います。
。するとき、私はこのインデックスを作成する必要がありますか?
言い換えれば、どのように大きなあなたがそれにインデックスを置く前にテーブルがするのでしょうか?
解決
あなたは、インデックスを追加します。インデックスは、データモデルの設計、データの問題を示す起動しない、いくつかの補足の一部です。
空のテーブルの上に欠落しているインデックスがまだ不足しているインデックスです。
他のヒント
あなたはあなたがあなたが必要としているとして、あなたはそれはあなたが時間を無駄にしてきた、その点で....問題になるまで「待機」にしたくないものにインデックスを持っていることを確認します。
しかし同時に、それはアプリケーションのために理にかなっていることを確認し、1つだけ作成のためにインデックスを作成しないでください。
例えば、あなたの操作に応じて、私はあなたが1日1エントリを持って推測しているとして、あなたは、DateTimeValue上のクラスタに「より効率的」であるかもしれない考えています。
常に開始するインデックスを追加します。テーブルには、あまりにもの小さなのインデックスを持っていることはありません。あなたは非常に大きなテーブルがある場合、インデックスは挿入/更新/削除遅くすることができます。
のように、問題となります私は「DateTimeValueは」この表の自然キーになると思いますか? それは最初から一意のインデックスを持つ必要があります。
彼らは低い選択性を有するので、他のフィールドについては、それは(IsWeekDay行の71%を返す)IsWeekDay又はIsWeekendのインデックスは、オプティマイザによって使用されることはありそうにない。
編集 また、これは基本的に読み取り専用のテーブルであることに注意してください。あなたはそれへのデータの別の年の価値を追加するときにのみ、これまでに数年ごとに一度書き込みパフォーマンスに影響を与えるだろうと好きなインデックスあなたを追加することができます。