MyISAM 索引文件和
- 存储引擎是属于表的
- 数据库的数据存储在 安装位置/data
- MYISAN 引擎存储文件,后缀是frm(存储的是表的结构),MYD(数据行的数据)MYI(存储的是索引)
- 索引B+TREE 结构,叶子结点存储的是数据行记录的磁盘地址(查找的过程跨两个文件,MYI—>MYD
- innodb存储引擎存储的文件。后缀是frm和ibd ibd 存储的是 索引文件和数据文件的合并
- INNODB 叶子节点存储的是数据,不是磁盘地址, 表数据本身就是按B+TREE组织的一个索引结构文件
- 聚集索引–叶节点包含了完整的数据记录。MYISAM 是非聚集索引,INNODB是聚集索引
- 为什么INNODB表必须要建主键,最好是整型自增的?
- 因为INNODB表数据文件本身就是按B+TREE组织的一个索引文件
- 如果不见主键,会自动选择一个不重复的列作为主键,都没有,会在后台生成一个唯一的列(帮你维护B+tree的数据结构)
- INNODB为什么要用整型自增主键?
- 索引查找时比较大小,整型要快于字符串(UUID),整型的存储空间更小,对磁盘的使用越少越节约资源,为什么选用自增的呢?B+TREE 和B 树的一个不同是,叶子结点之间存在指针。
- HASH索引的等值查询也很快,为什么大多数用B+TREE索引啊?
- 范围查找,B+TREE可以很好的支持范围查找。他的叶子节点是按照顺序,从左到右由小到大排列的,并且存在指针。
- 联合索引的底层存储结构长什么样子呢?
- 遵守最左前缀法则,指的是索引要从左边开始,explain 这种工具,去看一下sql是否走索引,
- 如果一张表有多个索引,是不是有多个B+TREE?
- INNODB 只有主键所以你叶子节点才会存储所有的数据, 非主键索引存储的是主键。(为了一致性和节省存储空间)