Mysql的7种join理论
1、Mysql分层结构:
(1)连接层
(2)服务层
(3)引擎层
(4)存储层
2、Mysql引擎十多种,主流的有两种:MyISAM,InnoDB
对比项 | MyISAM | InnoDB |
---|---|---|
主外键 | 不支持 | 支持 |
事务 | 不支持 | 支持 |
行级锁 | 表级锁,即使操作一条记录也会锁住表,不适合高并发 | 行级锁,只锁住操作的那行数据,适合高并发 |
缓存 | 只缓存索引,不缓存真实数据 | 不仅缓存索引,还缓存真实数据,对内存要求较高,内存的大小对性能有决定性影响 |
表空间 | 小 | 大 |
关注点 | 性能 | 事务 |
3、性能下降sql慢具体原因:
(1)查询语句写的不好;
(2)索引失效;
(3)关联查询太多的join,设计缺陷或者不得已的需求;
(4)服务器参数设置得不好,如缓冲,线程数等。
4、MySql语句执行的顺序:
(1)手写的sql顺序:
select…
from…
join…
on…
where…
group by…
having…
order by…
limit…
(2)mysql执行的顺序:
from…
on…
…join…
where…
group by…
having…
select…
order by…
limit…
5、Mysql的7种join理论:
(1)内连接:
(2)左连接:
(3)右连接:
(4)这种:
(5)这种:
(6)全连接:mysql中并不支持full outer join语法,可以使用左连接 union 右连接
(7)这种: