Mysql索引类型

一、索引的含义:索引是帮助Mysql高效获取数据的拍好序的数据结构。

        它是存储在文件里的,比如

mysql表在硬盘的文件类型


二、为什么索引都默认使用B+树呢?

    1. 二叉树:当插入的数据的时候,比该元素小的都放在左边,比他大的都放在右边。但是在特殊情况下,如果数据都比前一个元素的时候,数据结构会变成单链

二叉树


    2.红黑树:会自动调整数据结构,始终保持树状,但是深度不可控。

红黑树


        3. HASH结构:通过HASH算法,精准查询数据

        缺点:无法使用范围筛选,只能精确查询数据,适用于特殊场景

       4. B- Tree 可以通过度来调节树的深度,数据放在索引上。

    /** 程序每次读取mysql的索引时,都会把一行索引数据load到内存中去(默认4KB),因此不可以无限制地往一行索引插数据,所以B-Tree是有瓶颈的  */

B-Tree


    5. B+Tree:是B-Tree的变种,他的非叶子节点不存储数据,只存储索引,可以增加一列索引的数量。而且节点之间都有指向,是从小到大排列的,所以很适合进行范围查询。

B+Tree

三、innoDb与myisam的区别

    1. myisam引擎是非聚集索引,它的索引文件和数据文件是分离的。它是通过索引的文件指针,再查找出来数据。

    /** myisam的主键索引和非主键索引的结构都是一致的 */

myisam

    2. innoDb的索引是聚集索引,它把数据都存放在叶子节点里面。innoDb必须要有主键字段,并且推荐使用int类型的自增主键,有助于他查找索引数据。

        /** 它的非主键索引存储的是主键索引的值 ,而主键索引的叶子节点存放的是整条记录(数据一致性与节省空间)*/

联合索引

你可能感兴趣的:(Mysql索引类型)