Во-первых, стоит отметить, что Amazon Redshift не применяет внешние ограничения, но они используются для оптимизации запросов.См .: Определение ограничений первичного ключа и внешнего ключа
Colocation
Если таблица имеет ключ распределения, то строки распределяются по всем срезами, но все строки, относящиеся к определенному значению DISTKEY, будут расположены в одном и том же слайсе.
DISTKEY использует алгоритм хеширования, чтобы определить, в каком слайсе хранятся данные.Это распространено между таблицами.Например:
- Допустим, есть две таблицы:
Table-A
и Table-B
Table-A
со значением DISTKEY, установленным в столбец PK
Table-B
имеет DISTKEY, установленный в столбец FK
- Строка сохраняется в
Table-A
с PK = 100
- Строка сохраняется в
Table-B
с FK = 100
Данные для строк в обеих таблиц будут расположены в одном и том же срезе.Это верно даже без ограничения внешнего ключа, определенного между таблицами .