を注文:SQLインデックスID列はソート私はトランザクションテーブルを持っている
|rowID|value1|value2|...|
|11111|12 |34 |...|
|11112|23 |123 |...|
|11113|99 |53 |...|
...
RowID
1.インデックスによってアイデンティティと増加も問題ありませんです。多くの新しい値が挿入され、更新が行われ、時には一部の行が削除されることがあります。
しかし、今私は2番目のテーブルを持っている:
|rowID|flag1|flag2|...|
|11113|0 |1 |...|
|11111|1 |1 |...|
|11112|0 |1 |...|
...
それは、この第二のテーブルにトランザクションテーブルから行を挿入し、ユーザの操作、です。 RowID
は、トランザクションテーブルのRowID
に対応します。
2番目のテーブルへの挿入は、RowID
でソートされません。より高いRowID
は、より低いRowID
より早く挿入することができます。
このようなテーブルの最適なインデックス作成戦略は何ですか?
RowID
を第2のテーブルにプライマリキーとして定義して、クラスタ化インデックスを作成することは賢明ですか?RowID
がソートされていないので、これは理想的ではないと思います。- プライマリキーを持たないほうがよいでしょうが、適切な非クラスタ化インデックスはありますか?
このようなテーブル(2番目のテーブル)には一般的なアドバイスがあるのでしょうか?
テーブルには、(ほとんど)常にプライマリキーが必要です。ヒープが適切なアプローチであるところは非常に少数です。また、RowIDをクラスタード・インデックスにしたくない場合は、主キーがクラスタード・インデックスでなければならないというルールはありません。主キーを作成するときは、これは単にデフォルトの設定です。非クラスタ化するように指定し、デザインとデータが保証する場合は、別のクラスタ化インデックスを追加できます。 –