是否有分配键但没有声明的外键并置表?

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-ATable-B Table-A 已将 DISTKEY 设置为列 PK Table-B 已将 DISTKEY 设置为列 FK 一行存储在Table-APK = 100 一行存储在Table-BFK = 100

两个表中的行数据将位于同一个切片上。 即使没有在表之间定义外键约束也是如此。

【讨论】:

以上是关于是否有分配键但没有声明的外键并置表?的主要内容,如果未能解决你的问题,请参考以下文章

自定义 Visual Studio XSD 生成规则

补12.关于mysql的外键约束

我需要在 Oracle 的外键上创建索引吗?

Oracle外键需要建索引吗?

SQL 2005 另一个基础之间的外键

( 10 )MySQL中的外键