是否有分配键但没有声明的外键并置表?
Posted
技术标签:
【中文标题】是否有分配键但没有声明的外键并置表?【英文标题】:Does having distribution keys but no declared foreign key collocate the tables? 【发布时间】:2018-05-16 00:26:47 【问题描述】:在 Redshift 中,如果维度表和事实表的 PK 和 FK(分别)作为分布键,但事实表的 DDL 中没有声明外键约束,是否会在没有任何重新分布的情况下对表进行并置和连接?
【问题讨论】:
【参考方案1】:首先,值得指出的是,Amazon Redshift 不强制执行外部约束,但它们用于优化查询。见:Define Primary Key and Foreign Key Constraints
托管
如果表具有分布键,则行分布在所有切片中,但与特定 DISTKEY 值相关的行将全部位于同一切片上。
DISTKEY 使用散列算法来确定哪个切片存储数据。这在表之间很常见。例如:
假设有两个表:Table-A
和 Table-B
Table-A
已将 DISTKEY 设置为列 PK
Table-B
已将 DISTKEY 设置为列 FK
一行存储在Table-A
和PK = 100
一行存储在Table-B
和FK = 100
两个表中的行数据将位于同一个切片上。 即使没有在表之间定义外键约束也是如此。
【讨论】:
以上是关于是否有分配键但没有声明的外键并置表?的主要内容,如果未能解决你的问题,请参考以下文章