mysql 通过定时任务更新中间表

以前有一个任务需求,统计前十个物品的数量和名字。当时该表的数据量一共有四百二十多万的数据。执行一个sql语句花了我25秒,sql语句如下:

select DISTINCT (XXX), count(*) AS number from `XXXX` group BY XXX;

很多同学一感到慢就觉得该建索引了,但是事实上,索引对xxx效果并不大,排序走索引确实好,可是,使用排序的时候对对上一个的结果进行排序。而且建立索引的键值最好不好重复太多的,而上述的xxx有很多重复的值,这个时候对xxx建索引也并不是一个好的注意。

EXPLAIN select DISTINCT (xxx), count(*) AS number from `xxxx` group BY xxx; 发现是全表扫描。

思考了半天发现,这种单表统计的某列(无索引)数据的时候基本上没有任何比较好的方法,没有办法的情况下:只有建立一个中间表来解决这个问题。然后通过定时任务去统计数据,保证数据在不断的更新,那个时候数据库的压力并不是很大,也没有用缓存,就想交给数据库做,灵机一动的我还真找到了方法:

//创建一个存储过程

DELIMITER #

CREATE PROCEDURE temp()

BEGIN

insert into test(name) values(1);

COMMIT;

END #

DELIMITER;

//mysql 是默认没有开始 event 事件的

SET GLOBAL event_scheduler = ON;

//创建一个mysql的定时任务,1分钟执行一次,举一个例子哈,其实没有必要那么频繁的,当然是看任务场景哈。

CREATE event IF NOT EXISTS temp_event ON SCHEDULE EVERY 1 MINUTE

ON COMPLETION PRESERVE

DO CALL temp();

#删除事件#

DROP event temp_event;

后面每次就查test这个中间表保存的结果就可以了,也算是勉强完成了任务,至今没有找到更好的办法。

//注意,mysql这类的数据库说实话还是不适合专门用来做统计类型的数据库。PostgreSQL听说统计方面还不错,后面有机会要去试试。

Java定时任务中间表,mysql 通过定时任务更新中间表相关推荐

  1. mysql 存储过程新增表,mysql实例 存储过程中向表中添加数据

    摘要 腾兴网为您分享:mysql实例 存储过程中向表中添加数据,信和财富,视达网,人人视频,企商理财等软件知识,以及电视猫,office2000,贵阳银行,搜电共享充电宝,雅图电影院,达达跑腿,万圣节 ...

  2. mysql left join两个表,mysql left join 多个表

    SQL: select * from t_a a left join t_b b on a.bid = b.bid left join t_c c on a.cid = c.cid t_a表 t_b表 ...

  3. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  4. java定时任务,每天定时执行任务

    java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager {//时间间隔private static final long PERIOD_DA ...

  5. HIVE的安装配置、mysql的安装、hive创建表、创建分区、修改表等内容、hive beeline使用、HIVE的四种数据导入方式、使用Java代码执行hive的sql命令

    1.上传tar包 这里我上传的是apache-hive-1.2.1-bin.tar.gz 2.解压 mkdir -p /home/tuzq/software/hive/ tar -zxvf apach ...

  6. java获取mysql数据定时执行_mysql 事件处理(定时触发某个任务或存储过程等)

    自MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作系统的计划任 ...

  7. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  8. java 定时程序扫描表_Java扫描程序类

    java 定时程序扫描表 Scanner class in Java (java.util.Scanner) was introduced in Java 1.5 as a simple text s ...

  9. mysql怎么设置每天定时清表_Mysql每天定时清空表

    Mysql每天定时清空表 1.设置开启event scheduler SET GLOBAL event_scheduler=1; 2.验证event_scheduler是否已经开启 show vari ...

最新文章

  1. vector容器中erase(删除)的使用
  2. 记录去大搜车的一道笔试题
  3. Objective-C KVC
  4. 基于Policy Gradient实现CartPole
  5. hadoop扩充磁盘操作记录
  6. 如何使用log.debug()
  7. 【java基础知识】连接mysql的工具类编写
  8. hostingEnvironment与宿主环境
  9. 【转】Zookeeper入门
  10. uni-app中v-html中的元素添加样式
  11. ICLR2019 | 模型训练会发生了大量的、反复的样本遗忘现象,如何解决?
  12. 为什么程序员赚不了大钱?
  13. Google 思源黑体:改变字体界的未来
  14. android viewpagerindicator tab,ViewPager系列之顶部滑动indicator+viewPager
  15. 用Paddle自动生成二次元人物头像
  16. SELECT * FROM DUAL中的DUAL是什么?
  17. Webbrowser 使用IE 最高版本
  18. python培训报价
  19. Netkiller PHP 手札之前言
  20. C++语言篇 第九章 自定义函数详解

热门文章

  1. JavaScript中的字面量
  2. 实验2-2-3 计算存款利息 (10 分)
  3. wpf esc key 检测不到_爬虫笔记之requests检测网站编码方式(zozo.jp)(碎碎念) - CC11001100...
  4. OpenCV 图像金字塔buildPyramid、pyrDown、pyrUp
  5. Halcon OCR识别
  6. 4.2 js没有块级作用域
  7. 还在头痛被黑客劫持? 五步帮你摆脱烦恼!
  8. Linux-sed command
  9. 【广度优先搜索】一个实例+两张动图彻底理解 BFS | 思路+代码详解 | 用 DFS 自动控制我们的小游戏
  10. 【汇编语言与计算机系统结构笔记07】条件码,比较、测试、条件跳转与条件转移指令,结合微体系结构与流水的说明