Mysql 历史记录/审核表的设计建议
我需要随时跟踪许多项目及其状态 范例Mysql 历史记录/审核表的设计建议,mysql,database,database-design,data-structures,database-partitioning,Mysql,Database,Database Design,Data Structures,Database Partitioning,我需要随时跟踪许多项目及其状态 范例 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
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的伪秩函数来执行查询
然而,这是非常缓慢的。查询无法使用索引,因为对于任何特定项,它必须先找到秩=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的DBs这样的数据库会因为支持分区查询而更好吗
提前感谢您的任何想法 让我从一个问题开始: 这张桌子的主要目标是什么?在其中插入数据还是从中检索数据 两种可能性: 对于插入:我建议您对此进行规范化,您将有很多冗余。 检索:这是一个很好的方式。我建议为每组设置一个代理密钥。 如果要比较时间消耗,请尝试安装PostgreSQL并查看结果。 您不需要使用Oracle或MS-SQL,PostgreSQL应该足够好了 我知道我的建议与数据分区无关,但有一个类似的表在工作,这就是我如何做的,它工作得很好
希望我能帮忙,主要是检索。让我今晚试一试,看看是否有效!谢谢成年男子2年后我记起了,现在我回来报到了,哈哈。。。无论如何,PostgreSQL在使用分区查询时提供了更好的性能