Re: [SQL ] 這種資料用怎樣的資料結構比較好?
看板Database (資料庫)作者DarkKiller (System hacked)時間7年前 (2017/09/18 17:09)推噓1(1推 0噓 0→)留言1則, 1人參與討論串2/2 (看更多)
※ 引述《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
: 或是有其他適合的結構呢?
先看看這樣速度夠不夠,以你說的數量來看應該是很夠用...
--
Resistance is futile.
https://blog.gslin.org/ & <gslin@gslin.org>
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.116.104.21
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1505725758.A.BAE.html
推
09/19 20:32, , 1F
09/19 20:32, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章