【问题标题】:MySQL autogenerated id vs custom autogenerated idMySQL 自动生成的 id 与自定义自动生成的 id
【发布时间】:2017-08-25 15:35:07
【问题描述】:

我不得不说这是我在这里的第一个问题。目前,我在 MySQL 服务器中有一个表“journals”,其 ID 自动生成并具有自动增量:

´id´ int(10) NOT NULL AUTO_INCREMENT,
-- more columns
PRIMARY KEY (´id´)

我正在考虑修改此 ID 为自定义 ID,因为客户希望通过以下方式生成该 ID:

ABC0000001,其中“ABC”是部门的首字母缩写词,“0000001”是自动增量。我们已经为不同的部门制定了不同的首字母缩写词。

我可以通过触发器获取此 ID(类似的示例:How to make MySQL table primary key auto increment with some prefix),但我对性能和效率存有疑问,因为我可以通过初始解决方案和另一列存储部门的“结果”获得相同的“结果”首字母缩略词。在后端,我将创建一个方法来统一两个列,然后将结果返回到前端,并创建另一个方法将搜索拆分到表中。

有没有人遇到过类似的情况,可以在性能或效率方面指导我解决这个问题?提前致谢。

【问题讨论】:

  • 一个部门的编号有必要按顺序排列吗?还是可以'ABC0000001','DEF0000002','ABC0000003'?
  • 一个部门的编号不必按顺序排列。你的例子是对的。

标签: mysql database-performance auto-generate


【解决方案1】:

创建自定义生成的 ID 很有趣,但也很受虐。你的潜意识目标是什么?

AUTO_INCREMENT 优化得很好;其他任何事情的效率都介于稍微低和严重低之间。例如,触发器的成本可能是 INSERT 的两倍,但如果 INSERTs 不是性能问题,那么“那又怎样”。

半相关:UUID 对于巨大的表来说效率极低——由于它们的随机性。

【讨论】:

    猜你喜欢
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 2013-02-04
    • 2021-10-30
    • 2012-09-04
    • 1970-01-01
    相关资源
    最近更新 更多