Mysql时间函数的坑

Mysql时间函数

  1. 函数1: NOW()

  2. 函数2: SYSDATE()

大家看下测试 示例

  1. 正常大家执行时间函数【看起来没啥问题吧】
    在这里插入图片描述

  2. 执行第二段代码【这里代码认为 sleep休息5】大家会发现前后时间不一样,

    1. 对于now函数来讲 返回值都是执行这条SQL语句的时间,无论你整条语句有多么复杂
    2. 但是sysdata 返回则是执行到当前sysdate函数时系统的时间【sleep 5秒就相差5秒】

    在这里插入图片描述

  3. 当我们执行SQL语句 where 条件有索引时 在这里插入图片描述

这里是引用突然发现SYSDATE 居然没有索引
网上搜索查询 说使用SYSDATE 对应的列不会使用索引, 其实并不然 只是使用SYSDATE 完全不会使用索引,只是在某些情况下会使其他元素不适用的索引,我们称之为 优化器摇摆,【具体还要深究】
还有一个就是在集群的情况下使用 SYSDATE 会出现 sysdate is replication unsafe ,原因是使用sysdate会导致主从最终结果不一致,但是有个前提是LEX 声明 BINLOG 结构为 STMT时才会导致 replication unsafe
在这里插入图片描述

总的来说 个人觉得没事就少使用 SYSDATE() 避免挖坑

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值