sql优化前准备:
a,通过show status 命令了解sql语句的执行效率
如:
Com_xxx表示每个xxx语句执行的次数,我们通常比较关心的是以下几个参数
Com_select:执行select操作的次数,每次累加1
Com_insert:。。。。。。。
Com_update:。。。。。。。
Com_delete:。。。。。。。。
这些参数是针对所有的储存引擎的查询,你也可以只是查询一种储存引擎的,但是返回的结果不一样,执行条数如下:
Innodb_rows_read:但是这个命名表示的是SELECTT查询返回的行数
Innodb_rows_inserted:。。。。。。。。。。
Innodb_rows_updateed:。。。。。。。。。。
Innodb_rows_deleteed:。。。。。。。。。。。
另外下面几个参数也是了解数据库的基本情况:
Connection:试图连接mysql服务器的次数
Update:服务器工作时间。
Slow_queries:慢查询的次数。
b,定位执行效率较低的sql语句
方式一:可以使用慢查询日志查看那些执行效率较低的sql语句,
方式二:用show processlist 命令查看当前的msyql进行的线程包括线程的状态,是否锁表等,可以时时查看sql的执行情况,同时对于锁表进行优化;
c,可以使用explain 加上sql语句测试该sql语句的执行效率,计划
explain select * from shuju数据库.数据表 where id = 123;
d,我们也可以通过show profile 分析SQL 可以使用
查看是否支持profile:同时profiling默认是关闭的,可以通过set语句在Session级别开启profiling