数据库索引绝对是数据库知识体系里面很重要的一部分,上网查资料很容易被误导,或者讲的太深容易让人云里雾里。
没办法,只能慢慢的不断核实和订正。
以此文记录,记录学习索引的的阶段性总结。
1.面试:说一说聚簇索引和非聚簇索引的区别。
我会毫不犹豫的答道:
聚簇索引的叶子节点就是数据节点,包含了全部数据,而非聚簇索引仅仅是包含列值和主键值(InnoDB) 或者是 行指针(MyIASM)。
2.InnoDB的聚簇索引文件本身就是表文件,二者是等价的。
3.InnoDB的主键就是聚簇索引,而其他索引都是非聚簇索引。
4.MYIASM索引都是非聚簇索引,包括主键索引。
5.InnoDB和MYIASM的非聚簇索引是由区别的,谈非聚簇索引不分数据库引擎就是耍流氓。
可以看出,InnoDB的辅助索引不需要维护行指针,因为保存的是主键值(靠主键值去聚簇索引中找到数据),要回表查询;
而MyIASM的辅助索引是需要维护行指针的,因为数据方法地方可能会有变动。