在正式介绍Mysql调优之前,先补充mysql的两种引擎
mysql逻辑分层
InnoDB:事务优先(适合高并发操作,行锁)
MyISAM:性能优先(表锁)
查看使用的引擎:
show variables like "%storage_engine%";
使用哪个引擎在创建表时通过Engine=InnoDB创建,下面正式开始
一、为什么要对sql进行优化:
有时候数据库会出现性能低、执行时间太长、等待时间太长、SQL语句欠佳(连接查询)、索引失效等问题,这些问题会严重拖慢一个系统的速度,因此需要对sql进行优化。
SQL的编写过程和解析过程并非是一致的,下面是两者执行的先后顺序:
编写过程:
select..from..join..on..where..group by...having..order by...limit.
解析过程:
from..on..join..where..group by....having...select..order by...limit..
二、SQL如何优化:
SQL优化,主要就是在优化索引
索引:相当于书的目录,是帮助MYSQL高效获取数据的数据结构。就好比我们查字典,如果没有目录查一个字就需要遍历整本字典,而有了目录之后只需要按目录查询。索引的数据结构有(树:B+树(默认)、Hash树等等)
B+树是一种数据结构,所有的元素全部放在叶子节点,因此B+树查询数据都需要n次,n与树的高度相同