当我们有唯一的索引列

时间:2016-02-23 03:17:34

标签: mysql

我正在设计一个MySQL数据表来存储电子商务订单,每个订单都有一个独特的订单号,看起来像'20160223xxxxxx',它是由指定的算法生成的,以确保它在表中是唯一的。我想知道我们是否仍然需要一个自动增量字段作为表中的主键,因为我认为订单号似乎也可以是主键。

2 个答案:

答案 0 :(得分:1)

你没有需要一个自动递增的id,因为你有一个。但是,我是合成主键的忠实粉丝:

  • 它们定义了插入的序列,因此您知道哪些行最有效。
  • 4字节整数(如果你的表不是很大)对外键索引比长字符串更有效。
  • 如果其中一个唯一订单ID发生更改,则合成主键可以轻松更改该值。
  • 您与订单密钥生成系统的未来变更隔离开来。
  • 如果你的mysql主键通常是聚集索引。因此,带有合成密钥的插入到表的末尾 - 这是有效的。带外键的插入可能是乱序的 - 效率很低。

答案 1 :(得分:0)

您不需要使用auto-inc字段。使用唯一标识符作为表的PK。它将节省空间。