выберите отличную производительность не соответствует - PullRequest
0 голосов
/ 05 апреля 2019

В отдельной таблице есть отдельный запрос

select distinct d, e, f, a, b, c from t where a = 1 and e = 2;

Число различных значений в столбцах a, b, c является высоким (высокая мощность столбца), а столбцами d, e, f - столбцы с низкой мощностью. Мои данные в формате ORC в S3, и у меня есть внешняя таблица в спектре Athena и Redshift, указывающая на один и тот же файл.

Когда указанный выше запрос выполняется в Афине, он возвращается через пару секунд, тогда как в спектре красного смещения это занимает пару минут.

Но когда я перемещаю col f в конец списка выбора, он отлично работает и в спектре Redshift. Это происходит только для этого конкретного столбца, я имею в виду перемещение d или e в конце не имеет никакого значения, то есть они работают дольше. Col f - это столбец varchar, как и другие, и максимальная длина этого столбца составляет 30 байтов.

Два вопроса

  • (a) Любое понимание или указатели на своеобразное поведение, когда перемещение col f в конец списка ускоряет его выполнение, тогда как его размещение между ними замедляет

  • (b) Существует ли рекомендуемая практика SQL для составления списка столбцов в порядке убывания количества элементов в отдельных операторах или в группах по операторам? Имеет ли значение время выполнения, если столбцы с более низкой кардинальностью ставятся первыми или если они расположены в смешанном порядке?

1 Ответ

0 голосов
/ 05 апреля 2019

Обновление драйвера Redshift до последней версии обычно может привести вашу скорость Redshift Spectrum почти в соответствие с Athena.

https://docs.aws.amazon.com/redshift/latest/mgmt/configure-jdbc-connection.html#download-jdbc-driver

Это может не быть причиной в вашем случае использования, но это определенно стоит попробовать!

...