0
点赞
收藏
分享

微信扫一扫

Mysql-InnoDB索引:普通索引、主键索引、唯一索引、组合索引

肉肉七七 2023-05-07 阅读 66

为什么加了索引能够提高效率:

        索引底层实现是B+树。B+树类似折半查找,比如说如果有10亿条数据,一次就能砍到一半,数据量越多,索引的作用越大

索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件

InnoDB本身就是按B+Tree组织的一个索引结构文件

聚簇索引 / 非聚簇索引

InnoDB的  主键索引是 聚簇索引-叶子节点包含了完整的数据记录, 索引和文件放在一起存储

 myISAM的主键索引是 非聚簇索引-文件和数据文件是分离的(非聚集),索引和数据是2个文件

聚簇索引查询快:找到索引可以直接拿到数据,已经一次性加到内存中了

非聚簇索引查询:在索引文件中找到地址,再去到另外一个数据表中查询(回表)拿到文件,2次磁盘IO

主键索引: 是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字PRIMARY KEY 来创建

为什么建议InnoDB表必须要建一个主键,并且推荐使用整型的自增主键?

因为InnoDB存储引擎是基于B+Tree,如果不建主键 他会从所有字段中找到一个不重复的列作为隐藏主键来构造B+Tree,如果没有找到不重复的列,那么会维护一个隐藏的自增主键,所以建议建主键

1、整型的查询速度快

2、 整型占用的资源少

HASH:

对索引的key进行一次hash计算就可以定位出数据存储的位置

很多时候Hash索引要比B+树索引高效

仅能满足 “=”,“IN”,不支持范围查询

hash冲突问题

举报

相关推荐

0 条评论