MySQL数据库讨论问题:为什么使用自增列作为主键?
为什么使用自增列作为主键?
1。如果我们指定一个主键(PRIMARY KEY),InnoDB就会选择该主键作为聚簇索引。如果没有显式指定主键,InnoDB会选择一个没有NULL值的唯一索引作为主键索引。如果没有这样的唯一索引,InnoDB会选择内置的6字节ROWID作为隐式聚集索引(ROWID会递增,因为写入记录时会写入第一个键。.隐式)。
2。数据记录本身存储在主索引(B+Tree)的叶节点中。这就要求同一个叶子节点中的每条数据记录(一个内存页或者一个磁盘页的大小)都按照主键顺序存储,这样每当有新文件要插入时,MySQL都会将其插入到主键对应的节点中钥匙。 。及其位置,如果达到加载频率(InnoDB 默认为 15/16),将打开一个新页面(节点)
3。如果表使用自增主键,那么每次插入新记录时,该记录都会继续。 4。如果主键不是自动递增的(例如身份证号或学号等),则主键大约会在每个随机值中插入,因此每次创建新记录时,都必须将其插入到中间的某个位置现有的索引页,现在MySQL必须移动数据库以将新记录插入到正确的位置,并且甚至可以恢复登陆页。它被写入磁盘并从缓存中删除。现在必须从磁盘读回它,这很有帮助。同时,频繁的操作和分页会产生很多碎片,导致索引结构不足,以后无法使用。重新组织表并配置填充页而不使用 OPTIMIZE TABLE。
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。