美文网首页
MySQL - 时间格式不合法引起的慢SQL

MySQL - 时间格式不合法引起的慢SQL

作者: 鱼和熊掌o | 来源:发表于2018-12-05 15:47 被阅读0次

今天线上有个服务出现了大量的慢SQL 导致IOPS大幅抖动

SQL:

SELECT DISTINCT stc.USER_IDFROM t_signin_teacher_info stcWHERE stc.SID = 'oi3v3kHNMHoNqxXW9Qa'AND stc.TYPE = 1AND stc.CREATE_TIME >= '2018-12-04 00:00:00'AND stc.CREATE_TIME < '2018-12-04 24:00:00'

执行计划

从执行计划上看 优化器选择的索引 并不是我们想要的. 最优的应该是索引: idx_sid_ctime

为什么会这样? 

查看优化器的执行过程

上图OPTIMIZER_TRACE 可以看到优化器针对"idx_ctime_optype"和"idx_sid_ctime"两个索引的分析结果 其'cost'是一样的 所以选择了较前的"idx_ctime_optype".

但是很奇怪 为什么`SID` + `CREATE_TIME`索引耗时会和单个`CREATE_TIME`一样长呢?

故而 留意到优化器在进行索引筛选时 `CREATE_TIME`字段的条件只有一半: "2018-12-03 00:00:00 <= CREATE_TIME"(下界)

"CREATE_TIME < '2018-12-03 24:00:00'"(上界)消失了

怀疑是日期格式有问题.

因此 将"CREATE_TIME < '2018-12-03 24:00:00'"改为:"CREATE_TIME < '2018-12-04 00:00:00'"

查看执行计划和OPTIMIZER_TRACE正常了

优化后的

至此 已经可以很明确 这个慢SQL的原因是传入的日期'2018-12-04 24:00:00'不合法 而被查询优化器自动忽略了

相关文章

  • MySQL - 时间格式不合法引起的慢SQL

    今天线上有个服务出现了大量的慢SQL 导致IOPS大幅抖动 SQL: SELECT DISTINCT stc.US...

  • mysql数据库文章

    MySQL指南之SQL语句基础sql语法--菜鸟教程 mysql数据库中字符串格式的13位时间戳转换为日期格式 S...

  • 2018-02-06 技术笔记

    开启mysql慢查询日志 介绍开启慢查询,可以查看超过指定时间执行的SQL语句,有目标的优化SQL查询效率。 参数...

  • MySQL源码分析-慢查询

    源码版本:MySQL 5.7.22 一条sql语句在MySQL中执行超过一定时间,会被记录为慢查询,慢查询相关的参...

  • mysql 慢SQL分析

    开启慢SQL记录 为什么要开启慢SQL记录mysql在运行过程中,某些SQL可能会执行较长时间,我们通过配置一些东...

  • mysql慢查询日志

    慢查询日志 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能,执行时间...

  • 查询windows mysql配置以及常用命令 from ze

    1.mysql控制台查询慢sql时间 show variables like '%query%' 2.控制台开启慢...

  • MySQL慢查询日志相关笔记

    MySQL优化SQL,针对慢SQL语句的查询及相关配置。相关命令: 需要永久开启慢SQL查询日志,需要在my.in...

  • datagrip和navicat远程连接mysql访问慢

    主要表现为连接慢,执行语句时慢(sql查询时间其实很快的)背景:mysql5.7.30,centos7.6解决办法...

  • 慢sql优化

    背景:通过阿里云RDS后台,查看慢SQL,发现如下慢sql。 分析原因:使用mysql explain 这里可知l...

网友评论

      本文标题:MySQL - 时间格式不合法引起的慢SQL

      本文链接:https://www.haomeiwen.com/subject/hehwcqtx.html