首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >索引与自动增量ID设置为PK

索引与自动增量ID设置为PK
EN

Stack Overflow用户
提问于 2018-06-06 17:59:26
回答 3查看 3.1K关注 0票数 0

在MySQL中,索引和ID设置为AUTO_INCREMENT和作为主键有什么区别?

这也会提高数据库的搜索速度吗?还是AUTO_INCREMENT ID只是为了用户的目的而计算机在搜索数据库时不考虑它呢?在w3schools.com上阅读有关w3schools.com的文章时,我遇到了这样的情况:

索引用于非常快地从数据库中检索数据。用户看不到索引,它们只是用来加速搜索/查询。

EN

回答 3

Stack Overflow用户

发布于 2018-06-06 19:15:41

在MySQL中,主键在键上创建索引。。。但是原始数据页是索引的叶子。这可能有点令人费解,但结果是数据实际上是在数据页上排序的。

常规索引是作为b树实现的(注:"b“标准是”平衡的“,而不是”二进制的“,与许多人所认为的相反)。叶子与原始数据分开存储。

auto_increment是表的一个列的属性,其中值在每次插入时设置为一个新值,并且新值大于以前的值。增量通常为1,但不能保证这一点。auto_increment与索引没有直接关系,但几乎总是与表的主键相关联。

所以,在这两种情况下,你都有一个索引。主键索引稍微小一些,因为存储与数据页本身结合在一起。另一方面,磁盘上的数据需要有序,这可能会使插入和更新复杂化。另一方面,自动增量保证所有新行都在数据的末尾.另一方面,我已经失去控制了。

票数 2
EN

Stack Overflow用户

发布于 2018-06-06 18:26:42

在索引列时,可以创建二叉树(或者可能是另一种数据结构),以加快搜索过程。

默认情况下,ID或主键将被索引。

Auto_Increment意味着每当插入新行时,MySQL都要自动将值设置为该列。该值将以增量方式设置。

票数 0
EN

Stack Overflow用户

发布于 2018-06-06 19:21:05

AUTO_INCREMENT是一个整数序列生成器,其他什么都不是。它与任何类型的索引没有内在的联系,只存在于生成唯一的序列号。它经常用于生成整数代理密钥,它经常用作主键。

只要有一个或多个字段可用于唯一标识行,就不必使用AUTO_INCREMENT或整数ID作为索引。

事实上,在可伸缩性方面,像AUTO_INCREMENT这样的序列生成器是适得其反的,因为您只能有一个序列生成器的实例,从而将“主/写”服务器和/或瓶颈插入性能限制在运行生成器的节点上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50726763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档