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