我需要全程跟踪许多项目及其状态。
例子
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 = 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 的数据库这样的数据库会更好吗?
提前感谢您的任何想法!