Schema - person_id, location_id, time_slot, availability
因此,该表告诉我在一天的哪些时段(分为time_slots),该人是否在该特定位置。
因此,如果time_slots被分成10分钟,则1个位置的1个人将有10 * 6 * 24 = 1440行。
另外10个地点也可能有1个人。因此,每个人基本上有1440 * 10 = 14400行。因为,我希望数据库中有10万人,这个问题显然对我来说是不可扩展的(至少在MySQL中)。
数据库在查询方面应该表现良好,比如告诉我X从上午11点到下午5点是否可以出现在位置Y.
除了显而易见的解决方案之外,我无法思考。我想过实现一个段树类型的解决方案,但这看起来非常复杂。此外,创建具有更大时隙的另一个表似乎是一种解决方案。
我认为整个桌面设计必须改变,我正在寻找一些帮助。非常感谢。
答案 0 :(得分:0)
听起来您的查询是特定于用户的。如果是这种情况,您可以在User上启用对表的分区。这将提高您的查询性能。
刚刚找到类似用例的链接: http://www.chrismoos.com/2010/01/31/mysql-partitioning-tables-with-millions-of-rows