mysql之索引的使用

1.索引物理存放位置

    1.1mysql存放目录解析

             1.数据库文件存储的位置:my.ini配置文件中,datadir对应的数据目录位置。

             2.每个数据库 对应着一个文件夹

               a.MYISAM引擎:每一张表对应了3个文件

                       *.MYI:存放的是数据表对应的索引信息和索引内容;

                        *.FRM:存放的是数据表的结构信息;

                       *.MYD:存放的是数据表的内容;

                b.InnoDB引擎 :每一张表对应一个文件

                      *.frm 存放的是数据表的的结构信息

                      *数据内容和索引文件都是统一存放在ibdata文件中.

           3.索引文件都是额外进行存放的,对应索引的查询以及维护都是需要消耗IO的;

  1.2索引的存储结构(索引的原理)

     1)b-tree(平衡树):是mysql中使用最多的索引类型,在innodb中,存在两种索引类型:

   第一种是主键索引(primary key),在索引内容中直接保存数据的地址;

      第二种是普通索引,在索引内容中保存的是指向主键索引的引用;所以在使用innodb的时候,要尽量的使用主键索引,速度非常快;

    b-tree中保存的数据.都是按照一定顺序保存的数据,是可以允许在范围之内进行查询;

            

2)hash:把索引值做hash运算,存放hash表中。

    优点:因为使用hash表存储,按照常理,hash的性能比B-TREE效率高很多。

  缺点:1,hash索引只能适用于精确的值比较,=,in;或者<>;无法使用范围查询;

                  2,无法使用索引排序

          3,组合hash索引无法使用部分索引;

                4,如果大量索引hash值相同,性能较低;

猜你喜欢

转载自www.cnblogs.com/sxf20/p/11611191.html