一.开启慢查询日志
1.开启方式:
参考mysql数据库开启慢查询日志
2.查询日志的常用工具
在开发中,慢查询日志一天可能生成好几个G,一条一条的查询不太符合实际,所以我们要使用慢查询日志的分析工具,来查看慢查询日志的报表,比较常用的有两种:
3.通过慢查询日志发现有问题的sql
注:IO大的SQL就是扫描的行数越多,IO就越大
Rows examine 和Rows Send是扫描的行数和发送的行数,如果扫描的行数远远大于实际发 送的行数说明sql索引的命中率就很低
二.使用explan查询SQL执行计划
数据库是对sql先进行分析再进行具体的查询,对sql的分析就是执行计划
注:type中性能最好的就是const,最差的就是ALL
const:说明是一个常数查找,一般是主键和唯一索引
count(*)和count(列名)的区别是,*包含所有的列,列名不包含空值
注:上面的查询语句是同时统计出两个年份的数量,OR NULL代表如果为空就不进行统计
三. 建立合适的索引
注:最后一句话的意思是,select count(distinct customer_id) ,count(distinct staff_id) from table
最后查询出的customer_id的条数为 500 ,staff_id的条数为5,所以customer_id覆盖的范围就广,离散度就大,因为作为联合索引放在前面的效果会更好
四。表设计
注:192.168.0.1需要11个字节,bigint只需要7个字节