index vs auto increment id设置为pk

rt4zxlrg  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(377)

在mysql中,索引和设置为 AUTO_INCREMENT 作为主键呢?
这是否也会提高搜索数据库的速度?或者是 AUTO_INCREMENT id只是为了用户的身份,而计算机在搜索数据库时不考虑它?阅读关于 INDEX 在w3schools.com上,我遇到了这样一行:
索引用于快速从数据库检索数据。用户看不到索引,它们只是用来加速搜索/查询。

ego6inou

ego6inou1#

在mysql中,主键在键上创建索引。但原始数据页是索引的叶子。这可能有点复杂,但效果是数据实际上是在数据页上排序的。
一个常规索引被实现为一个b-树(注:“b”标准是“平衡的”而不是“二进制的”,这与许多人所相信的相反)。叶子与原始数据分开存储。 auto_increment 是表中一列的属性,其中该值在每次插入时设置为新值,并且新值大于上一个值。增量通常为1,但不能保证。 auto_increment 与索引没有直接关系,但几乎总是与表的主键相关联。
所以,在这两种情况下,你都有一个索引。主键索引稍微小一些,因为存储与数据页本身相结合。另一方面,数据需要在磁盘上保持有序,这会使插入和更新复杂化。另一方面,auto increment保证所有新行都在数据的末尾。另一方面,我已经没有人手了。

fslejnso

fslejnso2#

AUTO_INCREMENT 是一个整数序列生成器。它与任何类型的索引都没有内在联系,只存在于生成唯一的序列号。它经常用于生成整数代理键,而整数代理键通常用作主键。
你也不用用 AUTO_INCREMENT 或整数ID作为索引,只要有一个或多个字段可用于唯一标识行。
实际上,在可伸缩性方面,序列生成器 AUTO_INCREMENT 会适得其反,因为您只能拥有序列生成器的单个示例,从而限制了“主/写”服务器的数量和/或限制了运行该生成器的节点的插入性能。

qf9go6mv

qf9go6mv3#

为列编制索引时,会生成一个二叉树(或者可能是另一个数据结构)以加快搜索过程。
默认情况下,id或主键被编入索引。
自动增量意味着您希望mysql在插入新行时自动为列设置一个值。该值将以增量方式设置。

相关问题