Объединение объединений не работает, как задокументировано Redshift - PullRequest
0 голосов
/ 14 сентября 2018

Из документации AWS: Слияние Регистрация

Как правило, самое быстрое соединение, объединение слиянием используется для внутренних и внешних объединений. Объединение слиянием не используется для полных объединений. Этот оператор используется при объединении таблиц, в которых столбцы объединения являются одновременно ключами распределения и сортировки, а также когда сортируются менее 20 процентов объединяемых таблиц. Он считывает две отсортированные таблицы по порядку и находит совпадающие строки , Чтобы просмотреть процент несортированных строк, выполните запрос к системной таблице SVV_TABLE_INFO.

Соединение, которое я тестирую:

select *  
FROM d2l.tbl1 r
JOIN d2l.tbl2 rc
ON r.sortkey1_field = rc.sortkey1_field 

Подробности SVV_TABLE_INFO:

SVV_TABLE_INFO details

План выполнения:

Explan Plan

Я выполнил полную очистку и проанализировал обе таблицы перед тем, как запустить объяснение.

Кроме того, согласно документации дистрибутива AWS все должны иметь одинаковые значения с двумя объектами, имеющими одинаковый distkey. Несмотря на это, я воссоздал таблицы с distkey на заданном поле соединения, и оно все еще не объединяло план объяснения.

Может кто-нибудь объяснить, что происходит или, по крайней мере, что нужно изменить, чтобы сделать это объединением слиянием?

1 Ответ

0 голосов
/ 18 сентября 2018

Соединение слиянием требует, чтобы обе таблицы распространялись с DIST STYLE KEY с одним и тем же ключом. Первый столбец SORT KEY в обеих таблицах также должен совпадать с DIST KEY. Объединение объединений также требует обновленной статистики / вакуума.

Причина, по которой это не работает в вашем случае, заключается в том, что обе ваши таблицы распространяются с DISTSTYLE ALL.

...