Skewed表和Partitioned表的目的相同,都是为了优化查询。但是它们的实现方式和适用条件有所不同。 假设我们正在构建一个类似于Strava的健身跟踪器,并且用户数据不断地发送给我们。 分区:对这种类型的数据进行按日期和时间分区是非常正常的,例如/year=2017/month=10/day=12等。这样,任何基于日期和时间的过滤器都将非常快速。 SELECT col FROM table WHERE year=2017 AND month=10 Skewed table: 可能会发生这样一种情况,即一些用户不仅会发送健身房运动量,还会发送步数计数、地理位置、骑行、卡路里消耗、睡眠等信息。这些用户很少,但他们发送的数据量与普通用户相比非常大。因此,如果您想通过UserId查询,速度会很慢: SELECT col FROM table WHERE year=2017 AND month=10 AND userid=20 然而,Skewed表在这里可以提供帮助。假设那些活跃用户是20、23、25。现在您可以创建存储数据,如下所示: