请问对于数据库的主键究竟要不要用自增id呢?
简单写点我的经验。
1,如果表只是用来记录非业务数据,如日志消息等,用自增ID没问题,这种场景不需要使用ID去检索。
2,业务上使用的标识字段不要用自增ID,因为自增ID不可控,数据迁移和合并困难。
3,业务上使用的主键如果不想用guid,可以自行生成,有很多流行的主键生成算法可以借鉴。 无非是: 空间(产生主键的机器标识,如mac地址、主板序列号等)+ 时间(时间戳,如unix epoch)+ 种子(递增序列,取值范围看生成的并发数)。这样即便是在不同的服务器上同时生成,也不会发生冲突。