1、慢查询统计
show VARIABLES like '%que%'
SET GLOBAL slow_query_log = on; //开启慢sql统计开关
SET GLOBAL long_query_time = 1; //设置超过1秒则 认为是慢sql , 注意此处设置完之后需要重新链接客户端 才可以查看到设置成功
2、优化
索引优化
通过执行计划,查看是否走到索引
(1)索引是否有区分度
(2)是否忽略左匹配原则
(3)采用前缀模糊查询等坏语句
(4)没有做类型转换,导致未走到索引,比如使用$
(5)使用了不等号
(6)大量子查询(多用join,避免临时表)
(7)在where子句中使用表达式操作、函数操作等
SQL语句优化
(1)避免使用select*,不要返回不必要的字段,增加索引覆盖的概率
(2)尽量减少子查询(子查询会创建临时表,查询完毕删除临时表)
(3)调整where子句的连接顺序,将过滤数据多的条件放在前面,最快速度缩小结果集
(4)尽量减少联表查询,联表查询是笛卡尔乘积的形式,检索的数据几何倍上升
(5)一次查询的结果最好不要过大,可以使用分页查询
表设计优化
(1)大数据量分库分表
(2)数据避免倾斜
(3)单表的字段最好不要超过20个。如果是比较大的表,有的字段使用的多,有的字段使用比较少,使用频率比较少的会拖慢查询速度
(4)列类型的选择是否合适(能用int却用了bigint等)
3、索引Type详解