1.undo log,redo log,bin log是什么?Checkpoint是什么?一条MySQL更新语句的执行过程是什么样的?
2.脏页是什么?
5.MySQL中的事务是什么?
6.MySQL的隔离级别是怎么样的?
7.MVCC的实现原理是怎么样的?
8.MySQL是怎么解决幻读的问题的?
9.MySQL中有哪些锁?
10.B树是什么?
11.B树与B+树的区别是什么?
12.索引是什么?
13.字符串索引和数字类型索引的区别?
数字类型索引速度快,字符串涉及字符集编码过程,消耗CPU资源。
当MySQL中字段为int类型时,搜索条件where num=‘111‘ 与where num=111都可以使用该字段的索引。当MySQL中字段为varchar类型时,搜索条件where num=‘111‘ 可以使用索引,where num=111 不可以使用索引。
字符串索引优化:例如存储网站url,可以新增一个索引列,列值是对url进行CRC32("url")编码【不适合使用SHA1()、MD5(),因为编码后是非常长的字符串】。CRC32容易导致重复,可以使用自定义编码算法或者取MD5部分字符。
14.union和union all的区别是什么?
Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;(去重且排序)
Union All:对两个结果集进行并集操作,包括重复行,不进行排序;(不去重不排序--快)
15.Join的工作流程是怎么样的,怎么进行优化?
17.联合索引是什么?
18.回表是什么?覆盖索引是什么?
19.哪些情况不要建索引?主键,唯一性索引,普通索引的区别是什么?
21.InnoDB和MyISAM的区别是什么?
22.什么是分库分表?
23.怎么实现跨库分页查询?
二次查询法
24.MySQL主从复制的工作流程是什么样的?
25.char类型与varchar类型的区别?
char是固定长度存储字符,浪费空间但速度快。varchar是变长存储字符,节省空间但需要计算长度因此速度慢。
char适合存储很短的信息、固定长度信息(uuid)、频繁改变的列(varchar需要频繁计算长度)。
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉-缺点)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节)。
26.查询数量SELECT Count(*)怎么优化?
27.如何优化MySQL慢查询?
29.MySQL语句执行顺序?
1 from2 on3 join4 where5 group by(开始使用select中的别名,后面的语句中都可以使用)6 avg,sum....7 having8 select9 distinct10 order by
30.哪些时候索引无效?
31. Select执行过程
32. where having
where子句作用于基表或视图,从中选择满足条件的元组。
having短语作用于组,从中选择满足条件的组。
having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。
where肯定在group by 之前,即也在having之前。
where后的条件表达式里不允许使用聚合函数,而having可以