在MySQL中,索引和ID设置为AUTO_INCREMENT和作为主键有什么区别?
这也会提高数据库的搜索速度吗?还是AUTO_INCREMENT ID只是为了用户的目的而计算机在搜索数据库时不考虑它呢?在w3schools.com上阅读有关w3schools.com的文章时,我遇到了这样的情况:
索引用于非常快地从数据库中检索数据。用户看不到索引,它们只是用来加速搜索/查询。
发布于 2018-06-06 19:15:41
在MySQL中,主键在键上创建索引。。。但是原始数据页是索引的叶子。这可能有点令人费解,但结果是数据实际上是在数据页上排序的。
常规索引是作为b树实现的(注:"b“标准是”平衡的“,而不是”二进制的“,与许多人所认为的相反)。叶子与原始数据分开存储。
auto_increment是表的一个列的属性,其中值在每次插入时设置为一个新值,并且新值大于以前的值。增量通常为1,但不能保证这一点。auto_increment与索引没有直接关系,但几乎总是与表的主键相关联。
所以,在这两种情况下,你都有一个索引。主键索引稍微小一些,因为存储与数据页本身结合在一起。另一方面,磁盘上的数据需要有序,这可能会使插入和更新复杂化。另一方面,自动增量保证所有新行都在数据的末尾.另一方面,我已经失去控制了。
发布于 2018-06-06 18:26:42
在索引列时,可以创建二叉树(或者可能是另一种数据结构),以加快搜索过程。
默认情况下,ID或主键将被索引。
Auto_Increment意味着每当插入新行时,MySQL都要自动将值设置为该列。该值将以增量方式设置。
发布于 2018-06-06 19:21:05
AUTO_INCREMENT是一个整数序列生成器,其他什么都不是。它与任何类型的索引没有内在的联系,只存在于生成唯一的序列号。它经常用于生成整数代理密钥,它经常用作主键。
只要有一个或多个字段可用于唯一标识行,就不必使用AUTO_INCREMENT或整数ID作为索引。
事实上,在可伸缩性方面,像AUTO_INCREMENT这样的序列生成器是适得其反的,因为您只能有一个序列生成器的实例,从而将“主/写”服务器和/或瓶颈插入性能限制在运行生成器的节点上。
https://stackoverflow.com/questions/50726763
复制相似问题