我正在设计一个MySQL数据表来存储电子商务订单,每个订单都有一个唯一的订单号,类似于“20160223xxxxxx”,它是通过指定的算法生成的,以确保它在表中是唯一的。我想知道我们是否仍然需要一个自动增量字段作为表中的主键,因为我认为订单号似乎也可以作为主键。
最佳答案
您不需要需要一个自动递增的 ID,因为您有一个。然而,我非常喜欢合成主键:
- 它们定义插入顺序,以便您知道哪些行最有效。
- 对于外键索引来说,4 字节整数(如果您的表不是很大)比较长的字符串更有效。
- 如果其中一个唯一订单 ID 发生更改,合成主键可以轻松更改该值。
- 您不会受到订单 key 生成系统 future 变化的影响。
- 如果你使用mysql,主键通常是聚集索引。因此,使用合成键插入到表的末尾——这是有效的。使用外部键插入可能会出现乱序——效率低下。
关于mysql - 当我们有一个唯一的索引列时,我们是否应该存储一个自增ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35568158/