aws redshift 中的唯一键/主键 table

Unique key / Primary key in aws redshift table

我已经在 redshift 上分别创建了主键和唯一约束 table,我注意到根本没有强制执行唯一性

根据文档,他们说不强制执行唯一性或主键,但通过创建唯一性或主键会有更好的查询计划。

只是想确认上面的理解是正确的,即使我创建了主键或唯一键也会有重复,它不是强制执行的,但它可能有助于生成更好的查询计划?

是的,两种说法都是正确的 - Redshift 不强制唯一性,识别主键/外键可以加快查询速度。要注意的是,如果您定义主键/外键并且数据不是唯一的,则结果无效/不一致。获得的加速是通过假定唯一性(RS 不强制执行),因此 DBA 有责任确保生成正确结果的唯一性。在 Redshift 中,如果您不能强制唯一性,请不要将列定义为唯一。

这样做的原因是基于在分布式数据集群中强制执行唯一性的成本。由于同一 table 中的数据行之间存在网络跃点,因此实施唯一性的成本非常高,定义唯一性的好处不会超过这些成本。