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值相同,性能较低;