2016-12-06 8 views
0

を注文: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番目のテーブル)には一般的なアドバイスがあるのでしょうか?

+1

テーブルには、(ほとんど)常にプライマリキーが必要です。ヒープが適切なアプローチであるところは非常に少数です。また、RowIDをクラスタード・インデックスにしたくない場合は、主キーがクラスタード・インデックスでなければならないというルールはありません。主キーを作成するときは、これは単にデフォルトの設定です。非クラスタ化するように指定し、デザインとデータが保証する場合は、別のクラスタ化インデックスを追加できます。 –

答えて

0

テーブルは注文データセットではありません。 2番目のテーブルにあるRowIDの順序は、PK /インデックスの定義の時点では問題ではありません。

あなたはTable2のインデックスも作成されB-TREE作成された瞬間をRowIDPKをしなければならないとのデータが最速のアクセスのためにそこに保存されています。

関連する問題