互联网技术社区|福缘小草|程序员技术博客
🏠首页
  • 开发必备
  • Java
  • Spring Boot
  • MyBatis
  • C#
  • 架构
  • 算法
  • Vue
  • JavaScript
  • HTML
  • MySQL
  • Oracle
  • SQL Server
  • PostgreSQL
  • Redis
  • MongoDB
  • ElasticSearch
  • influxDB
  • ClickHouse
  • Linux
  • Docker
  • K8s
  • 消息队列
  • Shell
  • Git
  • Nginx
  • IDEA
  • Windows
  • 安卓
  • 在线工具
  • 实用技巧
  • 开源项目
  • 好文
  • 资源
  • 网站
  • 导航
💖关于
  • 分类
  • 标签
  • 归档

baohua.yin

不会填坑的程序员不是一个好程序猿!
🏠首页
  • 开发必备
  • Java
  • Spring Boot
  • MyBatis
  • C#
  • 架构
  • 算法
  • Vue
  • JavaScript
  • HTML
  • MySQL
  • Oracle
  • SQL Server
  • PostgreSQL
  • Redis
  • MongoDB
  • ElasticSearch
  • influxDB
  • ClickHouse
  • Linux
  • Docker
  • K8s
  • 消息队列
  • Shell
  • Git
  • Nginx
  • IDEA
  • Windows
  • 安卓
  • 在线工具
  • 实用技巧
  • 开源项目
  • 好文
  • 资源
  • 网站
  • 导航
💖关于
  • 分类
  • 标签
  • 归档
  • MySQL中延时或定时操作
    • select count查找是否存在效率问题
    • 批量清空数据库所有表数据
    • 字段类型date, datetime设置0000-00-00默认值报错
    • MySQL查询语句优化方法
    • MySQL查询 count(1) 比 count(*) 效率对比
    • Mysql中的COALESCE函数
    • MySQL字符串连接函数 ,分组连接函数
    • MySQL
    baohua.yin
    2023-03-03
    目录

    MySQL中延时或定时操作

    SQL Server的人都知道,它有一个很有用的功能,waitfor time和waitfor delay,前者表示在某个时间执行,后者表示等待多长时间执行。在我们测试功能和定时执行的时候特别有用,mysql只有一个定时函数,sleep(),我们只能通过这个函数来想办法了。

    sleep()说明:

    mysql> select id from c;
    +------+
    | id |
    +------+
    | 1 |
    | 2 |
    +------+
    2 rows in set (0.00 sec)
    
    mysql> select sleep(1),id from c;
    +----------+------+
    | sleep(1) | id |
    +----------+------+
    | 0 | 1 |
    | 0 | 2 |
    +----------+------+
    2 rows in set (2.00 sec)
    

    sleep(duration),表示等待的时间,参数以秒为单位。可以看出此时的sleep(),代表每次执行则等待1秒,有多少行数便等待多长时间。

    # 延时执行:

    有了等待这个概念,要延时就简单了,我们稍微变通下,先执行sleep(1),再执行语句。

    mysql> delimiter //
    mysql> select sleep(1);
    -> select id from c;
    -> //
    +----------+
    | sleep(1) |
    +----------+
    | 0 |
    +----------+
    1 row in set (1.00 sec)
    
    +------+
    | id |
    +------+
    | 1 |
    | 2 |
    +------+
    2 rows in set (1.01 sec)
    

    此时可以看到已经实现了等待1秒的效果。

    # 定时执行:

    其实,定时执行的话完全可以通过event来实现,但是,追求精简便捷的我们完全不能忍受这么繁琐的步骤,必须在一个界面来实现。

    既然有了延时,而我们又知道执行的时间,那我们只需要知道现在距离执行时间有多少秒就能实现了,于是,我们只缺一个计算时间差函数TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)。

    此函数类似sql server中的datediff()函数,用法都是一样的。

    mysql> set @datestop = '2015-08-21 15:50';
    -> set @i = timestampdiff(second,now(),@datestop);
    -> select sleep(@i);
    -> select now();
    -> select id from c;
    -> //
    Query OK, 0 rows affected (0.00 sec)
    
    Query OK, 0 rows affected (0.00 sec)
    
    +-----------+
    | sleep(@i) |
    +-----------+
    | 0 |
    +-----------+
    1 row in set (1 min 51.00 sec)
    
    +---------------------+
    | now() |
    +---------------------+
    | 2015-08-21 15:50:00 |
    +---------------------+
    1 row in set (1 min 51.01 sec)
    
    +------+
    | id |
    +------+
    | 1 |
    | 2 |
    +------+
    2 rows in set (1 min 51.03 sec)
    
    上次更新: 2023/03/03, 13:18:42
    select count查找是否存在效率问题

    select count查找是否存在效率问题→

    最近更新
    01
    如何进行科学上网
    05-31
    02
    分享(一个外地女孩,死在了我出租的公寓)
    08-18
    03
    温家宝总理—《我的母亲》
    06-13
    更多文章>
    Copyright © 2019-2025 1024fuli.com | 本站所有资源收集整理于网络,如有侵权请发邮件联系删除。| 粤ICP备18082936号-1 | 由又拍云提供CDN支持
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式