原子网络科技 原子网络科技

慢查询如何优化才能有效果:执行计划分析、索引优化以及语句优化的先后顺序

a169kai 2026年11月03日 · 阅读约 2 分钟

站点响应延迟一般集中在几条语句上,把这几条语句修改好之后,整个耗时就会降低一个数量级。

定位是从慢查询日志开始的。按照总的执行时间而不是每次执行的时间来排序,频繁出现的中等执行时间的语句比偶尔出现的高执行时间的语句对性能的影响更大。开启日志的时候要设定好合适的阈值,否则记录太多就会影响性能。

解读执行计划看三处。访问类型为全表扫描,扫描行数与返回行数之间的比例是否悬殊,是否存在临时表和文件排序的情况。三者都有的时候,改造的空间最大。

索引的排列顺序是按照最左边的前缀来确定的。等值条件在前,范围条件在后;排序字段与前序索引连续就可以省去额外的排序;查询涉及的字段都在索引中,可以消除回表。索引不是越多越好,写入频繁的表要控制数量。

对剩下的问题进行语句改写。不要在字段上执行函数运算,不要进行过于复杂的联表查询,使用游标分页代替大的偏移量,把嵌套的子查询改成关联查询。

统计信息和表结构也会影响到执行路径。数据分布发生变化之后优化器仍然按照旧的分布来选择索引,定期更新统计信息、检查执行计划;单表数据量超过一亿的时候,索引的收益会被维护成本所抵消,按时间或者业务维度拆分表比继续添加索引要有效得多。

每次只修改一处进行复测的时间较长,多地方一起修改的话就无法确定是哪处出了问题。

0 0 投票数
文章评分
订阅评论
提醒
guest
0 评论
最旧
最新 最多投票