博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
记单表数据较多的数据库查询实例及测试结果
阅读量:6593 次
发布时间:2019-06-24

本文共 1545 字,大约阅读时间需要 5 分钟。

【背景条件】

1.需要关联查询两张表icm和crd2.crd表和icm表分属不同数据库3.crd表很大,用mycat按月分库处理(500W条数据平均每月)

【业务逻辑实现流程】
1.首先从icm表中做一次呼叫类型统计

mysql> select call_type,count(1) from icm where add_time >'2017-03-01 23:55:00' and add_time<'2017-03-01 23:59:00' group by call_type;+--------------+--------+| call_type    | COUNT1 |+--------------+--------+| 2            |      2 || 4            |      3 || 6            |      1 |+--------------+--------+

2.取出每一种呼叫类型的呼叫编号(ucid)

mysql> select ucid from icm where add_time >'2017-03-01 23:55:00' and add_time<'2017-03-01 23:59:00' and call_type='4';+----------------------+| ucid                 |+----------------------+| 00100068631488383689 || 00100068711488383746 || 00100068881488383905 |+----------------------+

3.根据呼叫编号从crd表中算出这些呼叫的总的时间(步骤2得到的呼叫编号和此表的CallID项目一致)

mysql> select sum(callTimeLen) from crd where StatisticDate >'2017-03-01 23:55:00' and StatisticDate<'2017-03-01 23:59:00' and CallID in('00100068631488383689','00100068711488383746','00100068881488383905');+------+| SUM0 |+------+| 551  |+------+

【测试结果】

3/1~3/8 一周the operation take 13.0s3/1~3/15 二周the operation take 32.5s3/1~3/22 三周the operation take 45.5s3/1~3/29 一个月the operation take 65.0s

【问题】

很显然用户体验不好。是数据多的必然吗?还是有更优雅的方法或者逻辑?请问这些查询逻辑如何从sql层面优化?望恰好看到这篇文章的你不吝赐教,感谢。

 

【思路】

一、把数据根据需求,选择一个合适的细粒度提前计算出来。

因为历史数据的统计是固定的。即同样的数据同样的统计条件,统计100次的结果是一样的。

在这次需求中,我按照天的细粒度提前将数据计算出来,放到一张新的表中。效果是不言而喻的。

一个月500万条的数据。

按照天来计算整理,得到一个30*6(一天6条数据)=180条的数据。

再统计细粒度为整数天的时间就变的轻松又愉快了。

而小于一天的统计仍然调用原有逻辑由于数据量500/30=不到20万不大,统计时间也是可以接受的。

 

转载于:https://www.cnblogs.com/yoyotl/p/6702627.html

你可能感兴趣的文章
docker学习记录(五)--自定义镜像文件
查看>>
【MongoDB】Capped固定集合
查看>>
vmnet0 网桥链接报错
查看>>
Spring Boot 最佳实践(二)集成Jsp与生产环境部署
查看>>
找回消失的内存
查看>>
普世智慧 - 跨学科的知识和思维
查看>>
Linux内核高性能优化【生产环境实例】
查看>>
二、搭建Apache虚拟主机
查看>>
罗森伯格参加2012中国国际建筑智能化峰会北京站
查看>>
ospf(专题二)路由再发布
查看>>
HDFS相关
查看>>
我的友情链接
查看>>
windows server 2016 活动目录(一)
查看>>
linux Less
查看>>
我的友情链接
查看>>
Flex 图表组件使用示例
查看>>
嵌入式arm linux环境中gdb+gdbserver调试
查看>>
Mysql数据库备份和还原
查看>>
我的友情链接
查看>>
Cisco ACL访问控制列表实现网络单向访问
查看>>