0
我有一個交易表:SQL索引標識列排序順序
|rowID|value1|value2|...|
|11111|12 |34 |...|
|11112|23 |123 |...|
|11113|99 |53 |...|
...
RowID
是1索引標識和增量也沒問題。很多新的值被插入,更新發生,有時一些行可能會被刪除。
但現在我有一個第二表:
|rowID|flag1|flag2|...|
|11113|0 |1 |...|
|11111|1 |1 |...|
|11112|0 |1 |...|
...
這是一個用戶操作,其將行從交易表到該第二表。 RowID
對應於來自交易表的RowID
。
對第二個表的插入未按RowID
排序。較高的RowID
可能會比較低的RowID
更早插入。
什麼是這樣一個表的最佳索引策略?
- 明智的做法是在第二個表中定義
RowID
作爲主鍵,導致聚集索引?我認爲,這並不理想,因爲RowID
沒有排序。 - 沒有主鍵,但是合適的非聚集索引更好嗎?
我不知道是否有這樣的表(第二張表)的一般建議?
你應該(幾乎)總是在你的表上有一個主鍵。有很多時候堆是正確的方法。此外,如果您不希望RowID成爲聚集索引,則沒有規定主鍵必須是聚集索引。這只是創建主鍵時的默認值。您可以將其指定爲非聚簇,並在設計和數據保證時添加不同的聚簇索引。 –