![](/img/trans.png)
[英]Should I select auto-increment and primary key for the same SQL table column
[英]Should i use an auto-increment primary key although i already have a UNIQUE column?
当表中已经存在 UNIQUE 列(不是外键或其他任何内容)时,是否有任何理由对主键使用id int auto-increment
?
我正在阅读其他人关于使用 freebase 数据的项目的论文。 freebase 中的每个主题都由 mid 唯一标识。 (例如:m.gugkl395)。
但他没有使用 mid 作为主题表中的主键,而是选择使用 id(int 自动增量)。 所以主题表看起来像这样
CREATE TABLE topics (
id INT NOT NULL AUTO-INCREMENT,
mid VARCHAR(254) NOT NULL UNIQUE,
name VARCHAR(254) NOT NULL,
description VARCHAR(2048),
type VARCHAR(254) NOT NULL,
PRIMARY KEY (id)
);
我应该提到,还有 3 个其他表使用这个 id 作为外键,因为它与 freebase 有关,所以数据库中可能会有很多数据。 此外,如果使用 MySQL 版本 5.7.15 很重要。
从理论上讲,从 dbaseIII+ 开始 26 年以上,恕我直言,如果您有唯一键,则可以使用它,如果您不确定唯一性,自动递增字段只会简化事情。
实际上,关于数据库的实际编程和性能,您需要添加多行代码来创建主键值,并且有时需要连接到服务器以获取新键之前的最后一个键值,这些加上空间varchar 在表的设计中使用可能会影响解决方案的性能并需要更多的编程时间。
我希望这可能会有所帮助。
m.gugkl395
是 MID 的 RDF 编码,其原始形式看起来像/m/gugkl395
,但前缀是恒定的,而gugkl395
是 integer 的基数 32(?)编码。 最节省空间和性能的模式是只存储 integer。
MID 编码在我之前的回答中有所描述: https://stackoverflow.com/a/56012791/167425
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.