Java定时任务中间表,mysql 通过定时任务更新中间表
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 通过定时任务更新中间表相关推荐
- mysql 存储过程新增表,mysql实例 存储过程中向表中添加数据
摘要 腾兴网为您分享:mysql实例 存储过程中向表中添加数据,信和财富,视达网,人人视频,企商理财等软件知识,以及电视猫,office2000,贵阳银行,搜电共享充电宝,雅图电影院,达达跑腿,万圣节 ...
- 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表 ...
- java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码
jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...
- java定时任务,每天定时执行任务
java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager {//时间间隔private static final long PERIOD_DA ...
- 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 ...
- java获取mysql数据定时执行_mysql 事件处理(定时触发某个任务或存储过程等)
自MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录.对数据进行汇总等等),来取代原先只能由操作系统的计划任 ...
- java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...
下载原版阿里JAVA开发手册 [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...
- java 定时程序扫描表_Java扫描程序类
java 定时程序扫描表 Scanner class in Java (java.util.Scanner) was introduced in Java 1.5 as a simple text s ...
- mysql怎么设置每天定时清表_Mysql每天定时清空表
Mysql每天定时清空表 1.设置开启event scheduler SET GLOBAL event_scheduler=1; 2.验证event_scheduler是否已经开启 show vari ...
最新文章
- vector容器中erase(删除)的使用
- 记录去大搜车的一道笔试题
- Objective-C KVC
- 基于Policy Gradient实现CartPole
- hadoop扩充磁盘操作记录
- 如何使用log.debug()
- 【java基础知识】连接mysql的工具类编写
- hostingEnvironment与宿主环境
- 【转】Zookeeper入门
- uni-app中v-html中的元素添加样式
- ICLR2019 | 模型训练会发生了大量的、反复的样本遗忘现象,如何解决?
- 为什么程序员赚不了大钱?
- Google 思源黑体:改变字体界的未来
- android viewpagerindicator tab,ViewPager系列之顶部滑动indicator+viewPager
- 用Paddle自动生成二次元人物头像
- SELECT * FROM DUAL中的DUAL是什么?
- Webbrowser 使用IE 最高版本
- python培训报价
- Netkiller PHP 手札之前言
- C++语言篇 第九章 自定义函数详解
热门文章
- JavaScript中的字面量
- 实验2-2-3 计算存款利息 (10 分)
- wpf esc key 检测不到_爬虫笔记之requests检测网站编码方式(zozo.jp)(碎碎念) - CC11001100...
- OpenCV 图像金字塔buildPyramid、pyrDown、pyrUp
- Halcon OCR识别
- 4.2 js没有块级作用域
- 还在头痛被黑客劫持? 五步帮你摆脱烦恼!
- Linux-sed command
- 【广度优先搜索】一个实例+两张动图彻底理解 BFS | 思路+代码详解 | 用 DFS 自动控制我们的小游戏
- 【汇编语言与计算机系统结构笔记07】条件码,比较、测试、条件跳转与条件转移指令,结合微体系结构与流水的说明