小编Cry*_*t32的帖子

身份栏重新播种:什么时候需要?

在大学的最后一节课(我是学生)中,讲师要求我们开发一个数据库(如果重要的话,MySQL 服务器)和使用该数据库作为数据源的小型客户端应用程序。

要求之一是标识列(即每个表中的 PK)必须是连续的,因为这是一个很好的做法(按照讲师的话)。也就是说,当表行被删除时,它的 PK 必须在后续插入中重用。我对 RDBMS、PK 和身份列有一般的了解。据我了解,该标识列只是一种让 DB 在插入行时自动生成 PK 的方法,仅此而已。并且标识列值不得以任何方式与行属性相关(只要它不是自然键)。

这个要求(严格顺序标识列)对我来说是可疑的。我试图问讲师如果身份不是顺序的(由删除引起的差距)有什么问题,但得到了非常抽象的答案,比如“这对用户来说很方便,对维护数据库的数据库管理员很有用”。没有具体的例子。“方便用户”的说法听起来很傻,因为它在业务领域没有任何意义。

因此,我很好奇这些原因是否真实?我只能想到一种需要重新设置身份列的情况——当身份空间耗尽时。但是当标识列类型选择不正确时,这是更多的设计问题,说简单int而不是bigintuniqueidentifier当表包含十亿行。假设,一个标识列是一个聚集索引:标识列中的间隙会影响索引性能吗?也许我不知道在每次删除后自动标识列重新播种的其他现实原因?

提前致谢!

mysql auto-increment identity

12
推荐指数
3
解决办法
1430
查看次数

标签 统计

auto-increment ×1

identity ×1

mysql ×1