问一下下,怎么样在订单表里快速查询某段时间的下单人数。

MySql 码拜 8年前 (2016-02-07) 1131次浏览
例如一张表sales ,有300w条数据,记录的订单编号,订单客户,订单时间。
假设本人想统计这个星期的订单量,本人先统计好每天的相加就行了。
但是本人想统计这个星期的下单人数,只能去sales 取数据,不能像订单量一样相加。
问一下这种统计应该怎么优化。原因是需要统计当月的,当年的,而且几分钟刷新一次。
解决方案

40

做一个模拟materialized view
按照你需要统计的最小单位,例如周或月,定期更新增量
replace into monthly_user_id_mv
select year(order_date) * 100 + month(order_date) mth, user_id
from sales
where order_date between str_to_date(“2016-04-01”, “%Y-%m-%d”) and str_to_date(“2016-04-30”, “%Y-%m-%d”);
剩下的就快了
select count(distinct user_id)
from mv
where mth between 201501 and 201512;
假如需要更快,可以再做一个年版的mv。
假如需要精确到当时的每个人,可以再加一个sales统计增量数据的delta。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下下,怎么样在订单表里快速查询某段时间的下单人数。
喜欢 (0)
[1034331897@qq.com]
分享 (0)