Re: [SQL ] 这种资料用怎样的资料结构比较好?

楼主: DarkKiller (System hacked)   2017-09-18 17:09:16
※ 引述《Inosxz (加麦加麦)》之铭言:
: 数据库名称:MySQL
: 数据库版本:5.7
先假设你用 InnoDB (默认值)...
: 内容/问题描述:
: 原始的资料是每个商品在某日期为一个csv (例如: 商品A_20170901)
: 里面有客户a, b....的资料
: 如果把全部的资料丢到一个table
: 像是这样
: 商品 日期 客户 数量 ...
item_id trx_at customer_id num
: A 20170901 a 30 ...
: A 20170901 b 40 ...
: B 20170901 a 35 ...
: B 20170901 c 40 ...
: . . . . ...
: A 20170902 a 35 ...
: . . . . ...
: 但是发现资料量很大 一周就会有几百万笔
: 而且这样的结构没有主键
: 我需要的查询有两种统计情况
: 1) 商品A在一段时间(例如20170701~20170930) 出给各客户的总数量
: 例如a有3000个、b有2500个
SELECT customer_id, COUNT(*) FROM table WHERE trx_at BETWEEN ... AND ... GROUP BY customer_id;
所以有 (trx_at, customer_id) 的 covered index 会有帮助。
: 2) 客户a在一段时间(例如20170701~20170930) 持有商品的数量
: 例如持有商品A 3000个、商品B 700个
SELECT item_id, COUNT(*) FROM table WHERE trx_at BETWEEN ... AND ... WHERE customer_id = ... GROUP BY item_id;
所以有 (customer_id, trx_at, item_id) 的 covered index 会有帮助。
: 那资料结构是参考版上这篇的方法3吗
: #1DjQ-Ozb (Database)
: https://www.ptt.cc/bbs/Database/M.1303752600.A.F65.html
: 或是有其他适合的结构呢?
先看看这样速度够不够,以你说的数量来看应该是很够用...
作者: Inosxz (加麦加麦)   2017-09-19 20:32:00
好,我试试,感谢!

Links booklink

Contact Us: admin [ a t ] ucptt.com