【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?

这篇具有很好参考价值的文章主要介绍了【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在 MySQL 中, 索引是在存储引擎层实现的, 所以并没有统⼀的索引标准, 由于 InnoDB 存储引擎在 MySQL数据库中使⽤最为⼴泛, 下⾯以 InnoDB 为例来分析⼀下其中的索引模型.在 InnoDB 中, 表都是根据主键顺序以索引的形式存放的, InnoDB 使⽤了 B+ 树索引模型,所以数据都是存储在 B+ 树中的。

索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。MySQL提供多种索引类型供选择:普通索引 、唯一性索引、主键索引 、全文索引等等。

下面本篇文章就来给大家介绍一下主键索引和普通索引之间的区别 ,希望对你们有所帮助。

分析

【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?

从图中可以看出, 根据叶子节点内容不同,索引类型分为主键索引和非主键索引.

  • 主键索引也被称为聚簇索引,叶子节点存放的是整行数据;
  • 而非主键索引被称为二级索引,叶子节点存放的是主键的值.
  • 如果根据主键查询, 只需要搜索ID这颗B+树
  • 而如果通过非主键索引查询, 需要先搜索k索引树, 找到对应的主键, 然后再到ID索引树搜索一次, 这个过程叫做回表.

主键索引

  • 主键索引不可以为空
  • 主键索引可以做外键
  • 一张表中只能有一个主键索引

普通索引

  • 用来加速数据访问速度而建立的索引。
  • 多建立在经常出现在查询条件的字段和经常用于排序的字段。
  • 被索引的数据列允许包含重复的值

唯一索引

被索引的数据列不允许包含重复的值

总结

非主键索引的查询需要多扫描一颗索引树, 效率相对更低.

  • 普通索引是最基本的索引类型,没有任何限制,值可以为空,仅加速查询。普通索引是可以重复的,一个表中可以有多个普通索引。

  • 主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值;索引列的所有值都只能出现一次,即必须唯一。简单来说:主键索引是加速查询 + 列值唯一(不可以有null)+ 表中只有一个。文章来源地址https://www.toymoban.com/news/detail-415899.html

到了这里,关于【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql联合索引和普通索引的区别

            MySQL中,联合索引和普通索引都是用于加速查询的索引类型。它们之间的区别在于索引的列数和列的顺序。         普通索引只对单个列进行索引,而联合索引则同时对多个列进行索引,这些列可以按照特定的顺序组合在一起。例如,可以为表中的两个列(列

    2024年02月16日
    浏览(28)
  • mysql的主键索引为什么不能null

    这是一个非常奇怪且有趣的问题。可以通过官方文档进行解读 https://dev.mysql.com/doc/refman/5.7/en/glossary.html A special value in SQL, indicating the absence of data. Any arithmetic operation or equality test involving a NULL value, in turn produces a NULL result. (Thus it is similar to the IEEE floating-point concept of NaN, “not

    2024年02月14日
    浏览(50)
  • 【⑪MySQL | 约束(一)】概念 | 非空 | 唯一 | 主键 | 自增长约束

    ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL约束的概念 | 非空约束 | 唯一约束 | 主键约束 | 自增长约束的分享 ✨ 1. 约束(Constraint)概念 1.1 为什么需要约束 对于已经创建好的表,虽然字段的数据类型决定了所能存储的数据类型,但是表中所存储的数据是否合法并没有进行

    2024年02月16日
    浏览(30)
  • 【MySQL】MySQL表的约束-空属性/默认值/列属性/zerofill/主键/自增长/唯一键/外键

    表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过计数手段,倒逼程序员,插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合约束的 约束的最终模板:保证数据的完整性和可预期性

    2024年02月01日
    浏览(34)
  • openGauss中创建唯一索引和创建唯一约束的区别

    今天一个一起搬砖的兄弟同事过来问,为什么他的索引删不掉?我过去看了下: 执行脚本: 报错如下: 执行时出错 确认要继续执行吗? 单击“详细信息”了解详情。 SQL错误码: = 2BP01 ERROR: cannot drop index constraint_unique because constraint constraint_unique on table t1 requires it Hint: You ca

    2023年04月09日
    浏览(36)
  • 面试官灵魂拷问:什么是MySQL索引?为什么需要索引?

    关系型数据库是一种采用关系模型存储数据的数据库系统。在关系型数据库中,数据被组织成一个或多个表格(也称为关系),每个表格包含多行记录,每行记录代表一组相关数据。每个表格都有一个定义该表格中数据的结构的模式,即表格的列和每个列的数据类型。关系型

    2024年02月09日
    浏览(47)
  • 什么是聚簇索引和非聚簇索引?它们有什么区别?MySQL支持哪些存储引擎?

    聚簇索引(Clustered Index)和非聚簇索引(Non-clustered Index)是数据库中两种不同类型的索引结构,它们在存储和组织数据上有所不同。 聚簇索引: 聚簇索引是按照索引列的顺序重新组织数据的方式。它定义了表的物理排序方式,使得数据行按照索引列的顺序存储在磁盘上相邻

    2024年04月26日
    浏览(36)
  • mysql中主键索引和联合索引的原理解析

    主键索引 :按照主键数据从小到大按照从左到右进行排序,叶节点只存储数据区; 接着将上面的页生成出来,页只存储索引和指针,指针指向数据域,当通过主键查找数据时,从B+树的头部开始寻址数据、读取数据。 上面为索引页 下面为数据页 查询select * from table where a=6,

    2024年04月08日
    浏览(31)
  • 浅谈mysql的主键和索引

    在上一篇文章《count(1)、count(*)、count(字段)哪个更靠谱》中,我们提到过主键是优化不了count的查询效率的,需要建索引才可以,那么,是不是意味着主键的效率还不如一般的索引呢?怀着这个疑问,我们一起来了解下mysql主键和索引的相关知识。 mysql数据库的MYISAM和InnoDB引擎

    2024年02月08日
    浏览(32)
  • 【Mysql】复合主键的索引

    复合主键在where中使用查询的时候到底走不走索引呢?例如下表: 当执行以下SQL的时候到底走不走索引呢?             Explain结果: 使用索引   使用索引   使用索引   不使用索引   不使用索引   使用索引   结论:Mysql复合主键的顺序十分重要,WHERE查询条件中会按列匹配

    2023年04月25日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包