SQL Serverにテーブルがあり、テーブルの最後に挿入を追加します(中央に挿入されるクラスタリングキーとは対照的です)。これは、テーブルが常に増加する列によってクラスター化されることを意味します。
datetimeこれは、列でクラスタリングすることで実現できます。
CREATE TABLE Things (
    ...
    CreatedDate datetime DEFAULT getdate(),
    [timestamp] timestamp,        
    CONSTRAINT [IX_Things] UNIQUE CLUSTERED (CreatedDate)
)
しかし、私は2つThingsが同じ時間を持たないことを保証することはできません。したがって、私の要件は、日時列では実際には達成できません。
ダミーのID int列を追加し、その上にクラスター化することができます。
CREATE TABLE Things (
    ...
    RowID int IDENTITY(1,1),
    [timestamp] timestamp,        
    CONSTRAINT [IX_Things] UNIQUE CLUSTERED (RowID)
)
しかし、私のテーブルにはすでに列が含まれていることに気付くでしょうtimestamp。単調に増加することが保証されている列。これはまさに、候補クラスターキーに必要な特性です。
したがって、テーブルをrowversion(aka timestamp)列にクラスター化します。
CREATE TABLE Things (
    ...
    [timestamp] timestamp,        
    CONSTRAINT [IX_Things] UNIQUE CLUSTERED (timestamp)
)
順序を確認するためにダミーのID 列(RowID)を追加するのではなく、intすでに持っているものを使用します。
私が探しているのは、なぜこれが悪い考えなのかという考えです。そして他にどんなアイデアが良いのか。
注:回答は主観的なものであるため、コミュニティwiki。