Sql优化问题

本文探讨了如何判断SQL是否存在问题,包括系统级别的表象如CPU消耗和IO等待,以及SQL语句本身的特征如执行时间长和全表扫描。提到了使用监控工具如sar和top,以及Prometheus、Grafana来检查系统状态。此外,分享了SQL编写技巧,如合理使用索引,避免冗长的SQL,使用UNIONALL代替UNION以提高效率。
摘要由CSDN通过智能技术生成

判断问题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需要对数据进行排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值