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成为聚集索引,则没有规定主键必须是聚集索引。这只是创建主键时的默认值。您可以将其指定为非聚簇,并在设计和数据保证时添加不同的聚簇索引。 –