挿入前にDateTime.Now(C#から)に設定された日時フィールドにクラスター化インデックスを持つSQL Serverテーブルがある場合、テーブルの再編成を回避するために、インデックスを昇順または降順にする必要がありますか?
ありがとう。
挿入前にDateTime.Now(C#から)に設定された日時フィールドにクラスター化インデックスを持つSQL Serverテーブルがある場合、テーブルの再編成を回避するために、インデックスを昇順または降順にする必要がありますか?
ありがとう。
本当に重要ではありませんが、DateTimeは本当に一意であることが保証されていますか?クラスター化されたインデックスをDateTimeだけに配置することは避けます-代わりにINTIDENTITYまたはBIGINTIDENTITYを使用し、通常の非クラスター化インデックスをDateTimeに配置します(これは実際には一意であるとは限らないため......)
マーク
PS:主キーと同様に、クラスター化されたキーがどうあるべきかについての一般的なコンセンサスは次のとおりです。
クラスター化されたキーを構成する列(4バイトの一意化子を含む)は、クラスター化されていないすべてのインデックスのすべてのエントリに追加されるため、可能な限りスリムに保つ必要があります。
PS 2:クラスタリングキーは各非クラスター化インデックスに追加されます。これは、SQL Serverが非クラスター化インデックスで検索値を検出すると、行全体を取得する方法であるためです。これは、いわばデータベース内の行の「場所」です。したがって、それは一意で狭い必要があります。
これを読むhttp://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx
読み取りが日時フィールドに頻繁に基づいている場合は、日付とIDの複合キーをこの順序(日付、ID)で選択することをお勧めします。