聚族索引
非聚族索引
聚族索引特点
聚族索引优点
由于聚族索引的数据与索引存储在一起,因此只需要一次寻址就可以完成数据检索,速度更快(非聚族索引需要两次)
聚族索引缺点
由于数据与索引存储在一起,因此插入数据时按照主键索引顺序插入速度最快,如果不按照顺序插入,会导致数据分裂,需要进行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索引结构
讨论区