mysql的索引是由引擎决定的。
1.哈希索引,这个和哈希表是一样的原理,从关键字的哈希函数值映射到物理位置。特点是只能针对等于的查询,效率很高。
2.B树索引,为关键字维护一棵b树,通常是b+树,叶子节点存的是数据块的位置。这种索引主要实现了顺序。首先可以排序。其次做前缀索引,应用于多列索引的场合。如果是多列,那么构建索引的顺序决定了最终字典序的顺序。查询时,要特别注意条件,因为是最左匹配。索引构建索引的顺序要按照查询的需求来。
3.全文索引,在myisam引擎中,用于文本的查询,使用了分词这样的技术,检索内容比较快。
4.聚簇索引,其实这个维度和上面是不同的概念。聚簇索引并不是索引,主要强调的是行的物理排列方式,也是按照顺序的。所以最终的行的顺序和索引是一致的。不过,在一张表中,只能有一种物理排列顺序,也就只能有一种聚簇索引。聚簇索引的好处是,检索相邻的数据很快,因为物理上是按照顺序来的。但是缺点是,对插入数据的顺序要求较高,如果按照顺序插入,性能很好,但是如果不是,或者是随机,那么很可能要插入已存在的两行之间,那么只能做移动,效率很低,或者插入的一个满的页,那么会导致页的分离,也会有数据的复制。聚簇索引,也可以进一步细分,这个列是不是键,如果是,那么索引项的数目更少,因为不需要为每一行数据都做索引,只要为每一个物理页的第一行做索引即可。这一行叫做anchor record。但如果不是键,那么就需要为每一个值做索引,只存该值第一行的物理位置,总之得到第一行的位置,后面就可以当做链表了。对不是按顺序物理排放的列,只能做二级索引,也就是为每一个值都做一个索引项。
标签:顺序,插入,聚簇,索引,哈希,mysql,物理 From: https://blog.51cto.com/u_15873544/5844117