/ 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语句会报错
叶子节点中,会存储相邻叶子结点的指针,可以很大程度优化范围查询(> < >= <=)
变长长度字符串,使用char类型,在数据量级很大的时候,使用此列建索引高度变高
为什么表设计时设置为非空?
针对辅助索引,如果出现大量空值,会导致索引失效
1. 如果是where条件后有多列等值查询,那么只需要将这多列进行联合索引即可(= and or in)
但是,我们建索引是尽量将唯一值多的列放在前面,尽量满足优化器的算法规则
2.如果是 where A group by B order by C,必须按照语句的执行顺序建立联合索引
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
1.数据库没有启动
2.socket文件位置不对
物理损坏
逻辑损坏
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
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)