请稍候,加载中....

MySQL 索引数据结构


聚族索引

 


非聚族索引

 


聚族索引特点

聚族索引优点

由于聚族索引的数据与索引存储在一起,因此只需要一次寻址就可以完成数据检索,速度更快(非聚族索引需要两次)

聚族索引缺点

 由于数据与索引存储在一起,因此插入数据时按照主键索引顺序插入速度最快,如果不按照顺序插入,会导致数据分裂,需要进行OPTIMIZE TABLE优化表结构

 


Hash索引

MySQL Hash索引值可能不是唯一值,也就是可能有多行的hash值相同,那么这些相同Hash的行就会组成链表

 


HASH索引特点

Hash索引优势

Hash索引最大的优势就是快,通过hash计算就可以找到数据

Hash索引缺点

1. hash索引不能排序

2. hash索引不支持部分索引以及模糊查找

3. hash索引只能进行等值匹配 = 

 


MyISAM存储引擎

MyISAM存储引擎的索引使用非聚族索引(即索引叶子结点记录的是数据存储位置指针)

 


InnoDB存储引擎

InnoDB存储引擎使用的是聚族索引(数据存储在叶子节点),每张表都有一个聚族索引,通常建在主键上或者唯一键上,如果没有主键也没有唯一键,会自动创建一个隐藏的聚族索引

二级索引存储主键+索引key(非聚族索引)

在Innodb中,如果通过主键搜索,比如"select * from articles where id=10",那么直接通过主键就可以找到数据,速度非常快,如果是通过索引,比如: "select * from article where a_type=100",  首先找到a_type=100的key,然后通过存储的主键找到数据

 


Memory引擎

Memory引擎数据完全存储在内存,所以并没有磁盘寻址之类行为,因此Memory引擎默认索引存储结构为Hash索引结构


Python学习手册-