在MySQL中,Index与 ID 设置为AUTO_INCREMENT
和主键有什么区别?
这是否也会提高搜索数据库的速度?或AUTO_INCREMENT
ID 仅仅是出于用户的目的,计算机在搜索数据库时是否考虑过它?在w3schools.com上阅读INDEX
我发现了这一行:
索引用于非常快速地从数据库中检索数据。该 用户无法看到索引,它们只是用来加速 搜索/查询。
答案 0 :(得分:1)
在MySQL中,主键在键上创建索引。 。 。但原始数据页是索引的叶子。这可能有点复杂,但结果是数据实际上是在数据页上排序的。
常规索引被实现为b树(注意:“b”标准为“平衡”而不是“二进制”,与许多人认为的相反)。叶子与原始数据分开存储。
auto_increment
是表的一列的属性,其中值在每个插入上设置为新值,并且新值大于先前值。增量通常为1,但不保证。 auto_increment
与索引没有直接关系,但几乎总是与表的主键相关联。
因此,在这两种情况下,您都有一个索引。主键索引略小,因为存储与数据页本身相结合。另一方面,数据需要在磁盘上按顺序排列,这会使插入和更新复杂化。另一方面,自动增量可确保所有新行都位于数据末尾。另一方面,我已经失控了。
答案 1 :(得分:0)
索引列时,可以创建二叉树(或可能是其他数据结构)以加快搜索过程。
默认情况下,ID或主键已编入索引。
Auto_Increment意味着您希望MySQL在插入新行时自动为列设置值。该值将逐步设置。
答案 2 :(得分:0)
AUTO_INCREMENT
是一个整数序列生成器,没有别的。它与任何类型的索引没有固有的关系,只存在生成唯一的序列号。它经常用于生成经常用作主键的整数surrogate keys。
您不必使用AUTO_INCREMENT
或整数ID作为索引,只要您有一个或多个字段可用于唯一标识行。
事实上,就可伸缩性而言,像AUTO_INCREMENT
这样的序列生成器会适得其反,因为你只能拥有一个序列生成器的实例,限制了“主/写”服务器的数量和/或瓶颈将性能插入到运行生成器的节点的性能。