1. 什么是mysql存储引擎?有哪些存储引擎?他们又有什么不同?
2. innodb存储引擎,插入一条记录,会持久化到什么地方去?具体过程是怎样的?又是如何保证这条记录不会丢失的?
3. 什么是索引组织表?什么是堆组织表?两者有何区别?
4. 什么是索引?能起到什么作用?是如何起到作用的?
5. 聚集索引,非聚集索引,主键索引,辅助索引,普通索引,唯一性索引,非空索引,单列索引,多列索引,组合索引,哈希索引,全文索引
mysql索引到底有哪些种?innodb又可以支持哪些类型的索引?什么又是最左前缀原则?
6. 什么是聚集索引?为什么一张表只能只能有一个聚集索引?
7. 如何查看当前索引的状态?sql查询又具体是如何找到表上的索引的?插入、修改、删除一条记录,具体会对哪些索引产生什么样的影响?
8. 到底是用自增主键还是UUID做主键?如果是以手机号、订单号来唯一确定一条记录的情况下又如何?删除一条记录时会以什么样的过程导致什么样的结果?
9. 如何根据可预见的查询需求建立合适的索引?如何根据建立的索引写出高效的sql语句?
10. 什么是高选择性和低选择性?Cardinality值有什么含义?Cardinality是怎么预估出来的?如何根据Cardinality来分析索引?
11. “禁止在更新十分频繁、区分度不高的属性上建立索引”。
什么叫更新十分频繁的属性?经常插入user_id = xxx的记录算吗?
12. 什么是表碎片?表碎片是怎么产生的?
怎么理解“如果聚集索引上的值可以改动的话,那么也会触发物理磁盘上的移动,于是就可能出现page分裂,表碎片横生。”这句话?
13. 联表查询中,join语句和直接联表有什么区别?
select a.user_id from a left join b on a.user_id = b.user_id;
select a.user_id from a, b where a.user_id = b.user_id;
14. innodb索引中,B+树的度是如何变化的?是一开始就固定,还是随着记录的增多而增大?