一.存储引擎
二.索引
1.结构
2.分类
回表查询指的是先走二级索引找到对应的主键值,再根据主键值再到聚集索引当中拿到这一行的行数据。
3.语法
4.SQL性能分析
如果有简单的sql语句却耗时大量的时间,我们便可以通过profile来查看详细的情况。
当我们在进行sql优化的时候,尽量把type向前优化,null是指没有查询到任何东西,效率最高,system是指查询系统表,const是指查询唯一性索引,ref是指查询非唯一性索引,all是全表扫描,性能最低,index是指用了索引,但是也会对索引进行扫描,遍历整个索引数,性能也不是特别高
5.索引使用规则
索引使用的规则:
以上两个索引规则都是联合索引的使用规则。
走索引还是全表扫描取决于数据的分布,如果查询的是极少部分数据或者少部分数据,就会走索引,如果查询的是大部分数据或者全表,就走全表扫描。
sql提示就是我们人为的去告诉mysql使用索引的情况。
使用前缀索引降低索引的体积,降低空间,减少磁盘io。
创建联合索引要考虑字段的顺序,因为要满足最左前缀法则,最左边的字段一定要有。
6.索引设计原则
三.SQL优化
1.insert优化
想要大批量插入需要作上述的操作才可以。
主键顺序插入的性能大于乱序插入。
2.主键优化
页分裂比较的消耗性能
修改主键会涉及到索引结构的修改,引起不必要的麻烦。
主键长度过长在检索时会浪费磁盘io。
3.order by 优化
4.group by优化
5.limit分页优化
6.count优化
7.update优化
执行update语句的where条件尽量加上索引,否则就会从行锁变成表锁,并且这个索引不能失效,否则也会升级为表锁,从而导致并发性能降低。
四.视图
五.存储过程
1.基本语法
2.变量
3.if判断
4.参数
5.case语句
6.循环
7.游标
六.存储函数
七.触发器
八.锁
1.概述
2.全局锁
3.表级锁
4.行级锁
九.存储引擎
1.逻辑存储结构
2.架构
3.后台线程
4.事务原理
5.MVCC(多版本并发控制)
隐藏主键不是每一张表都有的。