美文网首页
MySQL - InnoDB主键索引、普通索引、唯一索引、联合索

MySQL - InnoDB主键索引、普通索引、唯一索引、联合索

作者: kyo1992 | 来源:发表于2021-04-14 08:30 被阅读0次

主键索引

主键一般有几种选择:

  • 自增id,即auto_increment;
  • 使用业务的整型字段,如分配给用户的key;
  • 使用UUID,例如雪花算法生成的如abcxxx很长的一串字符串。

一般DBA会推荐InnoDB表必须建主键,而且推荐使用整型的自增主键。
三种选择的优先级是 自增id > 业务整型字段 > UUID。

UUID

如果使用UUID作为主键,那么B+树的聚集索引的key就是UUID,UUID通常会比整型字段要长,而且字符串的比较是需要逐个字节比较,所以得出两个缺点

  • 占用空间大,单页存放的索引少了;
  • 比较运算量大,消耗cpu。
业务字段

比起自增id,虽然都是整型,但是业务字段有可能不是按顺序插入到表,考虑下图。



此时要插入索引值为4的节点,而B+树每页最多存放两个节点,插入4节点后,树变为



树产生了两次分裂,以及树的索引调整。
自增id

B+树特点是,所有节点从左右往右排好序,自增id插入B+是有序的,只会在节点放满了之后,才会新增一个页去存放,比起非自增id,会减少页分裂次数,提高性能。

普通索引

对非主键进行索引,就是普通索引。



与聚集索引一样,每个普通索引建立后,会用一个B+树进行维护,但是叶子节点并非存储索引对应行的所有记录,而是只存储了主键值,此时得到主键值后,再回到聚集索引上查找一次,即可得到数据记录,即回表。
这个不带行数据完整信息的索引,就叫二级索引(secondary index),也叫辅助索引。

唯一索引

联合索引

对多个字段同时建索引,就是联合索引。


联合索引底层存储结构

当查询条件同时涉及多个字段,就可以使用联合索引。
联合索引会根据字段的出现顺序在B+树中排好序,例如先入name排序,当name相同时就使用age,直到比较出大小为止。 利用这个特性,可以使用最左前缀原则优化SQL。

相关文章

  • MySQL - InnoDB主键索引、普通索引、唯一索引、联合索

    主键索引 主键一般有几种选择: 自增id,即auto_increment; 使用业务的整型字段,如分配给用户的ke...

  • mysql 查询效率优化之 常用索引的几种类型 新手使用教程,少

    Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引(联合索引,多列索引) 一、建立的方法介绍 ...

  • 索引

    分类 mysql的索引分为单列索引(主键索引,唯一索引,普通索引)和组合索引.单列索引:一个索引只包含一个列组合索...

  • 重新学习Mysql数据库4:Mysql索引实现原理

    MySQL索引类型 一、简介 MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索...

  • MYSQL索引

    mysql的4种常用索引类型:唯一索引,主键索引,全文索引,以及普通索引。 普通索引(INDEX):普通索引为索引...

  • Innodb索引原理解析

    今天讲解mysql储存引擎(Innodb)使用的索引。大家应该都用过各种索引(主键索引/唯一索引/全文索引)等等。...

  • 7. Interview-MySQL

    1 MySQL索引类型? 普通索引,index 主键索引,primary 唯一索引,unique index 全文...

  • MySql 数据查询优化

    1. MySQL索引类型: mysql的索引有5种:主键索引、普通索引、唯一索引、全文索引、聚合索引(多列索引)。...

  • MySQL常用索引

    1.主键索引 主键索引必定是唯一索引,且不允许空值 2.唯一索引 除开取值唯一以外,与普通索引没有区别 3.普通索...

  • mysql

    1.mysql索引的类型,主键索引、唯一索引、普通索引、组合索引、全文索引,b-tree索引 2.mysql具体有...

网友评论

      本文标题:MySQL - InnoDB主键索引、普通索引、唯一索引、联合索

      本文链接:https://www.haomeiwen.com/subject/gtcwkltx.html