判断问题SQL
判断SQL是否有问题时可以通过两个表象进行判断:
1.系统级别表象
2.CPU消耗严重
3.IO等待严重
4.页面响应时间过长
5.应用的日志出现超时等错误
6.可以使用sar命令,top命令查看当前系统状态。
7.可以通过Prometheus、Grafana等监控工具观察系统状态。
SQL语句表象
1.冗长
2.执行时间过长
3.从全表扫描获取数据
4.执行计划中的rows、cost很大
SQL编写技巧
合理使用索引
索引少了查询慢;索引多了占用空间大,执行增删改语句的时候需要动态维护索引,影响性能 选择率高(重复值少)且被where频繁引用需要建立B树索引;
一般join列需要建立索引;复杂文档类型查询采用全文索引效率更好;索引的建立要在查询和DML性能之间取得平衡;复合索引创建时要注意基于非前导列查询的情况。
使用UNION ALL替代UNION
UNION ALL的执行效率比UNION高,UNION执行时需要排重;UNION需要对数据进行排序