MySQL-十万个为什么? 老男孩MySQL DBA培训

    /    2019-09-09

22.union 和 union all区别

union 对结果集进行去重复,union all 不去重复

23.在5.7 中,sql_mode使用的是严格模式

sql_mode=only_full_group_by
参数的意思是:
select 后的查询列,必须是在group by出现过的列,或者使用函数括起来的。
否则group by语句会报错

24. b-tree与b+tree的区别?

叶子节点中,会存储相邻叶子结点的指针,可以很大程度优化范围查询(> < ><=)

25. 为什么char和varchar会对索引高度产生影响?

变长长度字符串,使用char类型,在数据量级很大的时候,使用此列建索引高度变高
 为什么表设计时设置为非空?
针对辅助索引,如果出现大量空值,会导致索引失效

26. 联合索引使用原则:

1. 如果是where条件后有多列等值查询,那么只需要将这多列进行联合索引即可(= and or  in
但是,我们建索引是尽量将唯一值多的列放在前面,尽量满足优化器的算法规则
2.如果是 where A   group by B  order by C,必须按照语句的执行顺序建立联合索引

27. SQL面试题

select e.emp_id,e.emp_name,count(c.course_id) from e
join c 
on e.emp_id=c.emp_id
where e.dept_name='技术部';

select e.dept,t.course,count(emp_id)
from e 
join c
on e.emp_id=c.emp_id
join t
on c.course_id=t.course_id
where c.score>=60

select e.emp_id,e.emp_name ,
case c.score
when c.score< 60
then '不及格'
when c.score >=60 and c.scoe <70
then '及格'
when score >=70 and c.scoe <85
then '良好'
when score >=85 
then '优秀'
END as '评级'
from e
join c
on e.emp_id=c.emp_id
join t
on c.course_id=t.corse_id
where t.tea_name='张三'

select e.detp_name ,e.emp_name,t.course_name,count(c.score)
from e 
join c
on e.emp_id=c.emp_id
join t
on c.course_id=t.course_id
where count(c.score)>0
order by t.course_name, c.score desc
limit 3

select e.emp_name,t.course_name ,avg(c.score)
from e 
join c
on e.emp_id=c.emp_id
join t
on c.course_id=t.course_id
where t.course_name in (‘数据库’,'java')
group by e.emp_name
having count(t.course_name)>1 

28 . 报错原因是什么?

1.数据库没有启动
2.socket文件位置不对

29. 数据库损坏?

物理损坏
逻辑损坏

30 . 从mysqldump 全备中获取 库和表的备份

1、获得表结构
# sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `city`/!d;q'  full.sql>createtable.sql

2、获得INSERT INTO 语句,用于数据的恢复

#
 grep -i 'INSERT INTO `city`'  full.sqll >data.sql &

3.获取单库的备份

#
 sed -n '/^-- Current Database: `world`/,/^-- Current Database: `/p' all.sql >world.sql

31.面试题

1. 联合索引: idx(status , signal)
2. 查询条件调整  where status   and signal 

数据和类型 ,not null   ,注释 

SQL语句是数据DDL操作,是属于列的添加操作
直接执行时会产生表锁,对业务的影响较大,数据量大,业务量大时,对于业务影响较大。
所以我们推荐使用 pt-osc 工具来进行online DDL,减少对业务的影响


A->B架构转换
1. 主库写压力大,可以通过多级主从减轻主库的压力
B-》A架构转换
2.业务读多写少,通过多从库实现读写分离和读的负载均衡,另外可以配合MHA等架构进行高可用


(0)

分享至