21

挿入前にDateTime.Now(C#から)に設定された日時フィールドにクラスター化インデックスを持つSQL Serverテーブルがある場合、テーブルの再編成を回避するために、インデックスを昇順または降順にする必要がありますか?

ありがとう。

4

2 に答える 2

34

本当に重要ではありませんが、DateTimeは本当に一意であることが保証されていますか?クラスター化されたインデックスをDateTimeだけに配置することは避けます-代わりにINTIDENTITYまたはBIGINTIDENTITYを使用し、通常の非クラスター化インデックスをDateTimeに配置します(これは実際には一意であるとは限らないため......)

マーク

PS:主キーと同様に、クラスター化されたキーがどうあるべきかについての一般的なコンセンサスは次のとおりです。

  • 一意(それ以外の場合、SQL Serverは4バイトの一意化子を追加して「一意化」します)
  • できるだけ狭い_
  • 静的(変更しない)
  • 増え続ける

クラスター化されたキーを構成する列(4バイトの一意化子を含む)は、クラスター化されていないすべてのインデックスのすべてのエントリに追加されるため、可能な限りスリムに保つ必要があります。

PS 2:クラスタリングキーは各非クラスター化インデックスに追加されます。これは、SQL Serverが非クラスター化インデックスで検索値を検出すると、行全体を取得する方法であるためです。これは、いわばデータベース内の行の「場所」です。したがって、それは一意で狭い必要があります。

于 2009-06-25T14:25:19.457 に答える
7

これを読むhttp://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx

読み取りが日時フィールドに頻繁に基づいている場合は、日付とIDの複合キーをこの順序(日付、ID)で選択することをお勧めします。

于 2012-04-19T03:49:52.097 に答える