查询频繁的表t_yh_transport_task

  1. 保证数据量最少,增加查询效率,
  2. 常用于查询的字段增加索引,
  3. 每日定时移动数据

    <!-- 医院系统预约任务历史删除定时器 -->
    <bean name="delHosTaskTimer" class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="com.yh.utils.timer.DelHosTaskTimer" />
    </bean>
    <!-- 定时任务触发器 -->
    <bean id="delHosTaskTimerTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="delHosTaskTimer" />
    <!-- <property name="cronExpression" value="0 0 1 * * ?" /> --><!--每天1点运行一次 -->
    <property name="cronExpression" value="0 */1 * * * ?" /><!--每1分钟运行一次 -->
    </bean>

  4. public class DelHosTaskTimer extends QuartzJobBean{具体业务逻辑}
  5. 或者:mysql中写   一个存储过程,每日定时移动数据。
  6. 存储过程:

    BEGIN
    DECLARE
    counts INTEGER;

    -- 记录迁移条数
    -- DECLARE
    -- '2018-07-01' datetime;

    -- 定义一个时间变量用来存放时间
    DECLARE
    result_code INTEGER;

    -- 定义返回结果并赋初始值
    DECLARE
    CONTINUE HANDLER FOR SQLEXCEPTION
    SET result_code = 1;

    -- 在执行过程中出现任何异常result_code为1
    -- SELECT
    -- '2018-07-01' INTO '2018-07-01';

    -- 获取今日零点三个月之前的时间
    SELECT
    count(1) INTO counts
    FROM
    (
    SELECT
    t.*
    FROM
    t_yh_transport_task t
    WHERE
    t.task_type = 1
    AND t.`create_time` <= '2018-07-01'
    UNION
    SELECT
    t.*
    FROM
    t_yh_transport_task t
    LEFT JOIN t_yh_ordertask_extend e ON e.transport_task_id = t.transport_task_id
    WHERE
    t.task_type = 2
    AND e.`order_time` <= '2018-07-01'
    ) a;
    -- WHERE
    -- a.task_status = '33'
    -- OR a.task_status = '99';

    START TRANSACTION;

    -- 进行事物处理
    -- 向历史表插入历史数据
    INSERT INTO t_yh_transport_task_history SELECT
    NULL,
    a.transport_task_id,
    a.user_id,
    a.create_time,
    a.task_Ftype,
    a.task_Ctype,
    a.task_content,
    a.task_org,
    a.transport_tool,
    a.task_Departure,
    a.task_Destination,
    a.task_status,
    a.task_startTime,
    a.task_endTime,
    a.exc_user_id,
    a.task_detail,
    a.affiliated_hospital,
    a.owned_property,
    a.task_type,
    a.cancel_reason,
    a.parent_task_id,
    a.destination_org,
    a.task_code,
    a.task_from,
    a.is_lock,
    now(),
    a.change_tool_time,
    a.end_reason,
    a.update_time,
    a.plan_no,
    a.wandaihao
    FROM
    (
    SELECT
    t.*
    FROM
    t_yh_transport_task t
    WHERE
    t.task_type = 1
    AND t.`create_time` <= '2018-07-01'
    UNION
    SELECT
    t.*
    FROM
    t_yh_transport_task t
    LEFT JOIN t_yh_ordertask_extend e ON e.transport_task_id = t.transport_task_id
    WHERE
    t.task_type = 2
    AND e.`order_time` <= '2018-07-01'
    ) a;
    -- WHERE
    -- a.task_status = '33'
    -- OR a.task_status = '99';

    -- 插入后删除三个月前的数据
    DELETE
    FROM
    t_yh_transport_task
    WHERE
    t_yh_transport_task.transport_task_id IN (
    SELECT
    a.transport_task_id
    FROM
    (
    SELECT
    t.*
    FROM
    t_yh_transport_task t
    WHERE
    t.task_type = 1
    AND t.`create_time` <= '2018-07-01'
    UNION
    SELECT
    t.*
    FROM
    t_yh_transport_task t
    LEFT JOIN t_yh_ordertask_extend e ON e.transport_task_id = t.transport_task_id
    WHERE
    t.task_type = 2
    AND e.`order_time` <= '2018-07-01'
    ) a
    -- WHERE
    -- a.task_status = '33'
    -- OR a.task_status = '99'
    );

    -- 插入日志
    INSERT INTO t_yh_move_data_log (time, tablename, count)
    VALUES
    (
    NOW(),
    't_yh_transport_task',
    counts
    );

    IF result_code = 1 THEN
    -- 发生异常就回滚反之就提交
    ROLLBACK;

    ELSE
    COMMIT;

    END
    IF;

    END

  7. mysql 调用函数:定时 call  上面的存储过程。

mysql数据库 ,java 代码巧妙结合提升系统性能。的更多相关文章

  1. SSM 配合 Mysql 数据库和代码数据源主从分离

    大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够.到了数据业务层.数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢 ...

  2. 操作MySQL数据库相关代码

    注意事项: 1.导入驱动包,如我导的是mysql-connector-java-5.1.26-bin.jar 2.修改下面代码中的用户名和密码 3.其中URL为"jdbc:mysql://数 ...

  3. Linux自动备份MySQL数据库脚本代码

    下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且会将备份文件通过gzip压缩.需要注意的是, ...

  4. Java连接MySQl数据库实现代码

    1. 获取数据库连接和查询代码 package connectionmysql; import java.sql.Connection; import java.sql.DriverManager; ...

  5. (详细)JAVA使用JDBC连接MySQL数据库(3)-代码部分

    欢迎任何形式的转载,但请务必注明出处. 本节主要内容 项目建立 数据库连接 数据库操作 主函数 点击进入推荐博客(必看) 一.项目建立 如图所示:新建Java Project.Package.Clas ...

  6. 更新MySQL数据库( java.sql.SQLException: No value specified for parameter 1) 异常 解决方法

    package com.swift; import java.io.File; import java.sql.Connection; import java.sql.PreparedStatemen ...

  7. Mysql 数据库 基础代码

    -- 创建数据库 CREATE DATABASE book; -- 创建作者表 CREATE TABLE authors( Id int not NULL, -- 作者编号 Fname VARCHAR ...

  8. Java连接MySQL数据库及简单操作代码

    1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘, ...

  9. MySQL入门很简单: 15 java访问MySQL数据库

    1. 连接数据库 1.1 下载安装驱动 java通过JDBC(Java Database Connectivity,Java数据库连接)来访问MySQL数据库.JDBC的编程接口提供的接口和类与MyS ...

随机推荐

  1. Git分支实战入门详细图解

    现在我们模拟一个简单的分支和合并案例,其中工作流可供真实项目借鉴. (1)在master开展工作 (2)为新的需求创建分支 (3)在新的分支上展开工作 这时,你接到一个电话,说项目有一个严重的问题需要 ...

  2. 转:为什么要有Spring?

    Java后端技术https://mp.weixin.qq.com/s?__biz=MzI1NDQ3MjQxNA==&mid=2247484822&idx=1&sn=6fbee2 ...

  3. 生成唯一UUID

    目前有多种方式生成的UUID,根据算法,可确定是否唯一,使用IP和MAC自定义生成唯一主键较妥: // 获取MAC地址的方法 private static String getMACAddress(I ...

  4. 软件测试面试-如何高质量提交缺陷bug?

    从实际工作中整理,如下:如有补充可以讨论! 所以会发现现在的面试题大部分问的都是工作中出现的场景了,而不是单纯的背诵 1:充分理解需求规则.原型图,知道预期结果,操作时判断是否为bug 解析:预期结果 ...

  5. 【转载】大白话Docker入门(一)

    原文:https://yq.aliyun.com/articles/63035 随着docker现在越来越热门,自己也对docker的好奇心也越来越重,终于忍不住利用了一些时间把docker学习一遍. ...

  6. HTML和XHTML区别

    HTML和XHTML 可扩展超文本标记语言XHTML(eXtensible HyperText Markup Language)是将超文本标记语言HTML(HyperText Markup Langu ...

  7. 题解 P3246 【[HNOI2016]序列】

    很久之前做过这道题,但是跑得贼慢,现在用了可以被卡成 n m 的笛卡尔树做法,发现跑得贼快[雾 noteskey 介绍一种复杂度错误然鹅在随机数据下跑得贼快的算法: 笛卡尔树 方法就是 \(O~ n\ ...

  8. 【easy-】437. Path Sum III 二叉树任意起始区间和

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  9. npm vue ivew vue-cli3

    2019-4-10 10:56:20 星期三 学习iview时需要搭建一套node环境, 这里记录下来 1. 下载安装nodejs  //自带了npm包管理器 2. 设置npm的全局配置: 全局包默认 ...

  10. qt学习笔记

    Part 1基本思路 学习目标:(熟练)使用 qt 制作符合要求的 ui FAQ:1)学习Qt5还是Qt4? 重要的是学习的方法而不是内容,掌握了正确的学习方法就可以很快完成另一者的学习,综合来看,Q ...