分表之后怎么优化查询

timeless-zyg

问题描述

数据库mysql 只能使用innodb引擎
有一张交易记录表,分表逻辑是按年月分 table_202308,table_202309.....
现在要对交易记录进行统计,而且后台也要查看记录
数据查询语句怎么优化?

我能想到的是 写个for循环一次一次查......

790 10 1
10个回答

胡桃

写个for循环生成union all SQL,只请求一次数据库。

admin

同问

  • 暂无评论
chaz6chez

一般这种场景都是使用etl将数据导入OLAP系统中进行统计的;
自己如果做的话,就弄一个批处理定时任务,分维度分颗粒度来进行统计,然后落一张表,业务的统计可以再在这张表上进行二次统计

小W

为啥不能使用Merge引擎?

用户名好难想

看数据大小, 可以重新弄一个数据库, 建立分区表, 把所有数据导入,根据数据要求来统计. 如果数据实在太多, 使用阿里的rds来统计, 虽然要花钱, 效果很好.

  • 暂无评论
释永战

不能按日期存啊,得按用户存···

  • 暂无评论
fantasmic

如果对实效性没有要求的比如不查今天数据,可以在人少时用定时任务进行业务统计然后落在一张表上,查询都用这个表

  • 暂无评论
初心by

新建统计表,去写mysql触发器 同步数据到统计表

evilk

先试试MySQL的分区吧,对业务是透明的,改动非常小
分表的话,业务层太麻烦了

  • 暂无评论
demo

交易数据不变的情况下,可以把这些数据交给时序数据库,空间占用小,统计计算也很快。

  • 暂无评论
🔝