慢SQL优化

1、慢查询统计

show VARIABLES like '%que%'

慢SQL优化_第1张图片

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详解

MySQL Explain命令详解:type列详解及案例分析 - 知乎

你可能感兴趣的:(数据库,sql,mysql)