MySQL大多数索引是B+Tree索引,在无特殊说明的情况下均为B+Tree索引
B+Tree通常意味着所有的值都是按顺序存储的
InnoDB支持以下三种索引:
InnoDB支持的哈希索引是自适应的,InnoDB会根据表的使用情况自动为表生成哈希索引,不能人为干预在表中生产哈希索引
1,如果一个主键被定义了,那么这个主键就是作为聚簇索引 2,如果没有主键被定义,那么该表的第一个唯一非空索引被作为聚簇索引 3,如果没有主键也没有合适的唯一索引,那么innodb内部会生成一个隐藏的主键作为聚簇索引,这个隐藏的主键是一个6个字节的列,改列的值会随着数据的插入自增。
叶子结点不是数据结点 叶子结点包含辅助索引的键值和指向聚簇结点的指针
独立的列 不可为null
唯一索引不为聚集索引时可以为null 索引为null时,该条数据的该索引失效
对多个列进行列索引 同时对多个列进行了排序,索引的B+Tree就已经完成了对多个列排序的工作 遵循最左前缀原则
索引的叶子结点包含列所有需要查询的字段的值,就称为覆盖索引
从InnoDB 1.2.x版本开始支持全文索引,通常使用倒排索引来实现的,它在辅助表中存储了单词与单词自身在一个或者多个文档中的位置进行了映射
参考: