Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 具有分发密钥但没有声明外键是否会将表并置?_Amazon Web Services_Amazon Redshift - Fatal编程技术网

Amazon web services 具有分发密钥但没有声明外键是否会将表并置?

Amazon web services 具有分发密钥但没有声明外键是否会将表并置?,amazon-web-services,amazon-redshift,Amazon Web Services,Amazon Redshift,在Redshift中,如果维度表和事实表的PK和FK(分别)作为分发键,但事实表的DDL中没有声明外键约束,那么这些表是否会在不进行任何重新分发的情况下并置和连接?首先,值得指出的是,Amazon Redshift不强制执行外键约束,但它们用于优化查询。见: 托管 如果一个表有一个分布键,那么这些行分布在所有的片上,但是与特定DISTKEY值相关的行都将位于同一片上 DISTKEY使用散列算法来确定存储数据的切片。这在表之间很常见。例如: 假设有两个表:Table-A和Table-B Tabl

在Redshift中,如果维度表和事实表的PK和FK(分别)作为分发键,但事实表的DDL中没有声明外键约束,那么这些表是否会在不进行任何重新分发的情况下并置和连接?

首先,值得指出的是,Amazon Redshift不强制执行外键约束,但它们用于优化查询。见:

托管

如果一个表有一个分布键,那么这些行分布在所有的片上,但是与特定DISTKEY值相关的行都将位于同一片上

DISTKEY使用散列算法来确定存储数据的切片。这在表之间很常见。例如:

  • 假设有两个表:
    Table-A
    Table-B
  • Table-A
    将DISTKEY设置为column
    PK
  • Table-B
    将DISTKEY设置为column
    FK
  • 一行以
    PK=100
  • 一行以
    FK=100

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

首先,值得指出的是Amazon Redshift不强制外键约束,但它们用于优化查询。见:

托管

如果一个表有一个分布键,那么这些行分布在所有的片上,但是与特定DISTKEY值相关的行都将位于同一片上

DISTKEY使用散列算法来确定存储数据的切片。这在表之间很常见。例如:

  • 假设有两个表:
    Table-A
    Table-B
  • Table-A
    将DISTKEY设置为column
    PK
  • Table-B
    将DISTKEY设置为column
    FK
  • 一行以
    PK=100
  • 一行以
    FK=100
两个表中的行的数据将位于同一个切片上。即使没有在表之间定义外键约束,这也是正确的