zoukankan      html  css  js  c++  java
  • mysql数据库 ,java 代码巧妙结合提升系统性能。

       查询频繁的表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  上面的存储过程。   
  • 相关阅读:
    处理ORACLE死锁
    正则表达式 浮点数 整型
    Oracle数据类型number(m,n)
    chm文件打开无法正常显示内容
    安装PHP程序提示“include_path='.;c:php5pear'”错误的解决方法
    mysql数据导入数据报错(数据丢失)
    微信小程序如何与数据库交互?
    Eclipse 常用快捷键
    深入理解BodyTagSupport,包括SKIP_PAGE, EVAL_PAGE等
    JSP自定义标签Taglib实现过程重点总结
  • 原文地址:https://www.cnblogs.com/ruize-coding/p/10444343.html
Copyright © 2011-2022 走看看