我需要隨時跟蹤許多項目及其狀態。歷史/審計表的設計建議
例
ItemId Location DateTime State
1 Mall A 2010-02-03 07:00 on_sale
1 Mall A 2010-02-20 08:22 sold
2 Warehouse 2010-02-02 09:00 on_sale
2 Transit 2010-03-02 16:20 transit
2 Mall B 2010-03-03 10:10 on_sale
2 Mall B 2010-03-12 12:11 sold
眼下,這是一個巨大的表,我使用MySQL的僞rank函數來執行查詢。
但是,它很慢。查詢無法使用索引,因爲對於任何特定項目,必須先找到rank = 1的項目,然後才能執行任何過濾。
SELECT
item_sorted.*, IF(@prev <> item_sorted.item_id, @rownum := 1, @rownum := @rownum+1) AS rank,
@prev := item_sorted.item_id
FROM ...
你有什麼經驗來實現這樣的功能? 你會推薦什麼樣的數據庫設計? 由於支持分區查詢,像Oracle或T-SQL能力數據庫這樣的數據庫會更好嗎?
在此先感謝您的任何想法!
看看這篇文章,我對PTA發現,聽起來很相似http://www.simple-talk.com/sql/database-administration/database-design-a-時間點架構/ – Mallow 2011-06-14 21:29:59