如何改进一个巨大的表的设计,它每分钟都在变化,需要大量的查询


Schema - person_id, location_id, time_slot, availability

因此,该表告诉我在一天中的哪个时间段(划分为time_slots),这个人在那个特定的位置出现或不出现。

因此,如果time_slots被划分为10分钟,那么在1个位置的1个人将有10*6*24 = 1440行。

一个人也可能出现在另外10个地点。所以,基本上,每个人有1440*10 = 14400行。因为,我期望在数据库中有10万人,这个问题对我来说显然是不可扩展的(至少在MySQL中)。

DB应该在查询上表现良好,比如告诉我X人是否可以从上午11点到下午5点出现在位置Y。

除了显而易见的解决办法之外,我想不出更多的办法。我想实现一个段树类型的解决方案,但这似乎非常复杂。此外,创建另一个具有更大时隙的表似乎是一个解决方案。

我认为整个表的设计必须改变,我正在寻找一些帮助与此。非常感谢。

听起来您的查询是特定于用户的。如果是这种情况,您可以通过User在表上启用分区。这将提高您的查询性能。

刚刚找到一个类似用例的链接:http://www.chrismoos.com/2010/01/31/mysql-partitioning-tables-with-millions-of-rows

最新更新