aws redshift 中的唯一键/主键 table
Unique key / Primary key in aws redshift table
我已经在 redshift 上分别创建了主键和唯一约束 table,我注意到根本没有强制执行唯一性
根据文档,他们说不强制执行唯一性或主键,但通过创建唯一性或主键会有更好的查询计划。
只是想确认上面的理解是正确的,即使我创建了主键或唯一键也会有重复,它不是强制执行的,但它可能有助于生成更好的查询计划?
是的,两种说法都是正确的 - Redshift 不强制唯一性,识别主键/外键可以加快查询速度。要注意的是,如果您定义主键/外键并且数据不是唯一的,则结果无效/不一致。获得的加速是通过假定唯一性(RS 不强制执行),因此 DBA 有责任确保生成正确结果的唯一性。在 Redshift 中,如果您不能强制唯一性,请不要将列定义为唯一。
这样做的原因是基于在分布式数据集群中强制执行唯一性的成本。由于同一 table 中的数据行之间存在网络跃点,因此实施唯一性的成本非常高,定义唯一性的好处不会超过这些成本。
我已经在 redshift 上分别创建了主键和唯一约束 table,我注意到根本没有强制执行唯一性
根据文档,他们说不强制执行唯一性或主键,但通过创建唯一性或主键会有更好的查询计划。
只是想确认上面的理解是正确的,即使我创建了主键或唯一键也会有重复,它不是强制执行的,但它可能有助于生成更好的查询计划?
是的,两种说法都是正确的 - Redshift 不强制唯一性,识别主键/外键可以加快查询速度。要注意的是,如果您定义主键/外键并且数据不是唯一的,则结果无效/不一致。获得的加速是通过假定唯一性(RS 不强制执行),因此 DBA 有责任确保生成正确结果的唯一性。在 Redshift 中,如果您不能强制唯一性,请不要将列定义为唯一。
这样做的原因是基于在分布式数据集群中强制执行唯一性的成本。由于同一 table 中的数据行之间存在网络跃点,因此实施唯一性的成本非常高,定义唯一性的好处不会超过这些成本。