一、索引是什么?
索引是协助MySQL高效获取数据的数据结构。
二、索引精干什么?
索引十分要害,尤其是当表中的数据量越来越大时,--索引关于功能的影响益发重要。索引能够容易将查询功能进步好几个数量级,--总的来说便是能够显着的进步查询功率。
三、索引的分类?
1、从存储结构上来区分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。这儿所描绘的是索引存储时保存的方法,
2、从使用层次来分:一般索引,仅有索引,复合索引
3、依据中数据的物理次序与键值的逻辑(索引)次序联系:集合索引 / 非集合索引,
平常讲的索引类型一般是指在使用层次的区分。
就像手机分类:安卓手机,IOS手机 与 华为手机,苹果手机,OPPO手机相同。
一般索引:即一个索引只包括单个列,一个表能够有多个单列索引
仅有索引:索引列的值有必要仅有,但答应有空值
A8站源码交易平台
复合索引:多列值组成一个索引,专门用于组合查找,其功率大于索引兼并
聚簇索引(集合索引):并不是一种独自的索引类型,而是一种数据存储方法。详细细节取决于不同的完成,InnoDB的聚簇索引其实便是在同一个结构中保存了B-Tree索引(技能上来说是B+Tree)和数据行。
非聚簇索引:不是聚簇索引,便对错聚簇索引
四、索引的底层完成 A8站源码交易平台
mysql默许存储引擎innodb只显式支撑B-Tree( 从技能上来说是B+Tree)索引,关于频频拜访的表,innodb会通明树立自适应hash索引,即在B树索引基础上树立hash索引,能够明显进步查找功率,关于客户端是通明的,不行操控的,隐式的。
不谈存储引擎,只评论完成(笼统)
Hash索引
根据哈希表完成,只要准确匹配索引一切列的查询才有用,关于每一行数据,存储引擎都会对一切的索引列核算一个哈希码(hash code),而且Hash索引将一切的哈希码存储在索引中,一起在索引表中保存指向每个数据行的指针。
----A8站源码交易平台